首页 > 代码库 > 设计模式学习笔记-单例模式
设计模式学习笔记-单例模式
一、概述
保证一个类仅有一个实例,并提供一个访问它的全局访问点。
二、模式中的角色
Singleton:定义一个Instance操作,允许客户访问它的唯一实例,Instance是一个类操作;可能负责创建它自己的唯一实例;
三、UML类图
四、代码实现
4.1 双重锁定
/// <summary> /// 双重锁定 /// </summary> public class Signleton { private static Signleton instance; private static readonly object _object = new object(); private Signleton() { } /// <summary> /// 提供一个全局访问点 /// </summary> /// <returns></returns> public static Signleton GetInstance() { if (instance == null) { lock (_object) { if (instance == null) { instance = new Signleton(); } } } return instance; }
4.2 静态初始化
/// <summary> /// 静态初始化,密封类,以免被继承产生更多的实例 /// </summary> public sealed class Signleton { private static readonly Signleton instance = new Signleton(); private Signleton() { } /// <summary> /// 提供一个全局访问点 /// </summary> /// <returns></returns> public static Signleton GetInstance() { return instance; } }
五、应用场景
5.1 当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时。
5.2 当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例时;
参考书籍《设计模式-可复用面向对象软件的基础》
设计模式学习笔记-单例模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。