单例模式要求一个类只能有一个实例,并且提供了一个全局的访问点。
比如说,中国主席的职位是Singleton,法律规定主席选举,任何时间只能有一个主席。
1、逻辑模型图:
2、物理模型图:
3、具体实现:
3.1、懒汉式单例:
1 | //懒汉式单例 |
3.2、线程安全的单例
1 | public sealed class Singleton |
3.3、双重锁定
1 | public sealed class Singleton |
3.4、静态初始化
1 | public sealed class Singleton |
3.5、延迟初始化
1 | //如果类,结构,代理,枚举是外置,那么修饰符只有public和internal,默认是internal |
4、实现总结:
Singleton单例模式构造方法可以设置为protected,允许子类继承。
单例模式不要支持实例化,可能导致多个对象实例,也不要支持Icloneable接口,导致多个对象的实例,单例模式只考虑了对象创建的管理,没有考虑对象销毁的管理,支持垃圾回收的平台的对象的开销来讲,没必要对其销毁进行特殊的管理。
理解:Singleton模式核心:如何控制用户使用new对一个类的构造方法任意调用。