首页 > 代码库 > 设计模式之单例模式
设计模式之单例模式
0. 引言
软件开发过程中(尤其对于图形界面来说),经常会遇到单例模式问题,而且还是多线程会同时访问的问题。
1. 单线程下的单例模式
如果仅仅是单线程,想必还是很简单的,无需考虑数据共享问题,代码如下:
public class Singleton { private static Singleton _instance; private Singleton() { } public static Singleton Instance { get { if (_instance == null) { _instance = new Singleton(); } return _instance; } } }
2. 多线程下的单例模式
这种情况下,大部分我们很想到双次检测再加锁的解决办法,代码如下:
public class Singleton { private static Singleton _instance; private static object _lock = new object(); private Singleton() { } public static Singleton Instance { get { if (_instance == null) { lock(_lock) { if (_instance == null) { _instance = new Singleton(); } } } return _instance; } } }
3. 静态构造函数下的单例模式
这种办法最方便高效,直接把双次检查加锁的任务交给CLR吧,貌似主流语言目前只有C#支持,代码如下:
public class Singleton { private static readonly Singleton _instance = new Singleton(); public static Singleton Instance { get { return _instance; } } }
设计模式之单例模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。