《设计模式解析》摘录(14)
来源:互联网 发布:淘宝没展现怎么办 编辑:程序博客网 时间:2024/04/30 09:44
Singleton 模式
Singleton 模式和 Double-Checked Locking 模式都可以用于确保某个类只有一个对象实例化。两个模式的区别在于:Singleton 模式用在单线程应用程序中,而 Double-Checked Locking 模式用于多线程应用程序。
关键特征:
意图:希望对象只有一个实例,但没有控制对象实例化的全局对象。还希望确保所有实例使用该对象相同的实例,而无需将引用传给它们。
问题:几个不同的客户对象需要引用同一个对象,而且希望确保这种类型的对象数目不超过一个。
解决方案:保证一个实例。
参与者与协作者:Client 对象只能通过 getInstance 方法创建 Singleton 实例。
效果:Client 对象无需操心是否已存在 Singleton 实例。这是由 Singleton 自己控制的。
实现:
1、添加一个类的私有的静态成员变量,引用所需的对象;
2、添加一个公有静态方法,它在成员变量的值为 null 时实例化这个类(并设置成员变量的值),然后返回该成员变量的值;
3、将构造函数的状态设置为保护或私有,从而防止任何人直接实例化这个类,绕过静态构造函数机制。
如果知道需要一个对象,而且没有性能因素需要将对象的实例化推迟到需要时进行,用静态成员变量包含对该对象的引用,往往更简单。
在多线程应用程序中,Singleton 对象通常必须是线程安全的,这意味着该对象要么在不同线程之间使用同步,要么没有数据成员。
有状态 Singleton 应该谨慎使用,因为这样的全局数据可能会使系统的不同部分耦合。
无状态 Facade 可以用一个 Singleton 实现化,以避免出现一个以上 Facade。Strategy 模式的具体策略对象(无状态时),Bridge 模式的具体实现(无状态时)也可以这样实例化。
- 《设计模式解析》摘录(14)
- 《设计模式解析》摘录(1)
- 《设计模式解析》摘录(2)
- 《设计模式解析》摘录(3)
- 《设计模式解析》摘录(4)
- 《设计模式解析》摘录(5)
- 《设计模式解析》摘录(6)
- 《设计模式解析》摘录(7)
- 《设计模式解析》摘录(8)
- 《设计模式解析》摘录(9)
- 《设计模式解析》摘录(10)
- 《设计模式解析》摘录(11)
- 《设计模式解析》摘录(12)
- 《设计模式解析》摘录(13)
- 《设计模式解析》摘录(15)
- 《设计模式解析》摘录(16)
- 《设计模式解析》摘录(17)
- 设计模式解析------笔记,摘录
- javascript的静态类的写法
- NLP 和 搜索 、机器视觉 /机器翻译
- 中高级口译考试高频翻译考点
- xml 总结(三)webservice中的应用
- windows程序设计翻译错误
- 《设计模式解析》摘录(14)
- 当新手遇见病毒
- 在线正则表达式工具
- 单例模式实现
- Web访问失败
- 内存分配函数
- D-Day +7 of .NET 第一次写简历,Virgin简历给了AMT;还有我的计算器啊!在CSDN的社区,向阿立求助了,仍旧无语。。。
- 动态内存管理实例
- 感伤于母校的巨额负债