Aha!设计模式(36)-单例(2)

网友投稿 222 2022-09-19

Aha!设计模式(36)-单例(2)

适用性

在下面的情况下可以使用Singleton模式• 当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时。

这句话的翻译有一点点问题,还是看英文原文:

there must be exactly one instance of a class, and it must be accessible to clients from a well-known access point.

作者认为应该这样翻译:当类只能有一个实例而且要求这个实例可以通过一个清晰简明的访问点访问时。

• 当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例时。

英文原文

when the sole instance should be extensible by subclassing, and clients should be able to use an extended instance without modifying their code.

作者的译法:当这个唯一的实例需要通过子类扩展,而且要求客户不需要修改代码就可以使用这个扩展的的实例时。

结构

估计这是《设计模式》一书中最简单的类图了。但即便如此,这个图仍然可以简化:真正必须的只有2个静态成员。

参与者

• Singleton

— 定义一个Instance操作,允许客户访问它的唯一实例。 Instance是一个类操作(即Smalltalk中的一个类方法和C++中的一个静态成员函数)。

类操作这个词时相对于实例操作而言的,C++中就是静态成员函数。

— 可能负责创建它自己的唯一实例。

也可能时使用实现定义好的(例如全局变量)实例。

协作

• 客户只能通过Singleton的Instance操作访问一个Singleton的实例。

没啥好说的。

作者观点

类图中没有提到客户,这并不是说没有客户,而是随便谁都可能成为客户。

注:

本文中蓝色粗体文字都引自《设计模式》一书。

觉得本文有帮助?请分享给更多人。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Tkinter编程应知应会(9)-简易计算器(含源代码链接)
下一篇:Python GUI编程入门(29)-Notebook控件
相关文章

 发表评论

暂时没有评论,来抢沙发吧~