[笔记]01Singleton 单件(创建型模式)
2011-12-12 22:03
274 查看
动机(Motivation)
一些特殊的类 只存在一个实例(确保他们的逻辑正确性)
这个应该是类设计者的责任,而不是使用者的责任。
如何绕过常规的构造器?提供一种机制保证一个类只有一个实例?
意图(Intent)
确保一个类只有一个实例。
单线程Singleton模式实现
构造器可以设置为protected以允许子类派生
不要支持ICloneable接口
不要支持序列化
缺点是,不能应对多线程的情况
这个模式,我们只考虑了对象的创建而没有考虑对象的销毁
多线程实现
使用静态构造器
一些特殊的类 只存在一个实例(确保他们的逻辑正确性)
这个应该是类设计者的责任,而不是使用者的责任。
如何绕过常规的构造器?提供一种机制保证一个类只有一个实例?
意图(Intent)
确保一个类只有一个实例。
单线程Singleton模式实现
class Singleton { private static Singleton instance; private Singleton() { } public static Singleton Instance { get { if(instance == null) { instance = new Singleton(); } return instance; } } }
构造器可以设置为protected以允许子类派生
不要支持ICloneable接口
不要支持序列化
缺点是,不能应对多线程的情况
这个模式,我们只考虑了对象的创建而没有考虑对象的销毁
多线程实现
class MulThreadSingleton { private static volatile MulThreadSingleton instance = null; private static Object lockHelper = new Object(); private MulThreadSingleton() { } public static MulThreadSingleton Instance { get { if(instance == null) { lock(lockHelper) { if(instance == null) { instance = new MulThreadSingleton(); } } } return instance; } } }
使用静态构造器
相关文章推荐
- [笔记]01Singleton 单件(创建型模式)
- 设计模式(1)-创建型-单件(Singleton)模式 (个人笔记)
- 设计模式笔记(2)---单件模式(创建型)
- C#面向对象设计模式纵横谈(2):Singleton 单件(创建型模式) 笔记
- 设计模式笔记--创建型模式之五--单件 Singleton
- 设计模式笔记(2)---单件模式(创建型)
- 设计模式笔记(2)---单件模式(创建型)
- 笔记2:Singleton 单件(创建型模式)
- 设计模式笔记(2)---单件模式(创建型)
- Sigleton单件(创建型模式)--面向对象设计模式纵横谈讲座笔记之二
- C#面向对象设计模式学习笔记(1) - Singleton 单件模式(创建型模式)
- 设计模式笔记(2)---单件模式(创建型)
- 设计模式笔记1:单件模式
- 设计模式学习笔记(五)--单件模式
- 设计模式笔记(4)---生成器模式(创建型)
- [设计模式]1.Singleton 单件(创建型模式)
- 设计模式笔记(4)---生成器模式(创建型)
- [设计模式笔记]一. 创建型模式--2.Factory Method模式(二)
- 创建型模式学习总结——设计模式学习笔记
- C#面向对象设计模式学习笔记(4) - Factory Method 工厂方法模式(创建型模式)