1、Singleton 单件(创建模式)
2014-07-03 17:00
225 查看
一、Singleton模式主要应用在一些特殊的类,在整个系统运行中,有且仅有一个实例的场景
二、Singleton模式分为单线程与多线程情况,当然多线程一样适应单线程
单线程:在这种情况下比较容易,因为你的程序你能保证在单线程下运行,所以不要考虑那么多情况
多线程:因为在多线程环境时,在判断instance为null与创建实例之类,有可能存在多个线程同时进入判断,从而创建多个不同的实例,为了防止这种情况,
在判断instance为空时,增加双判断
一个比较简单的实现:
二、Singleton模式分为单线程与多线程情况,当然多线程一样适应单线程
单线程:在这种情况下比较容易,因为你的程序你能保证在单线程下运行,所以不要考虑那么多情况
public class Singleton { private static Singleton instance; /// <summary> /// 拒绝类外的成员创建实例 /// </summary> private Singleton() { } /// <summary> /// 用属性公开实例对象 /// </summary> public static Singleton Instance { get { if (instance == null) { instance = new Singleton(); } return instance; } } }
多线程:因为在多线程环境时,在判断instance为null与创建实例之类,有可能存在多个线程同时进入判断,从而创建多个不同的实例,为了防止这种情况,
在判断instance为空时,增加双判断
public class Singleton { private static volatile Singleton instance; private static object lockHelper = new object(); /// <summary> /// 拒绝类外的成员创建实例 /// </summary> private Singleton() { } /// <summary> /// 用属性公开实例对象 /// </summary> public static Singleton Instance { get { if (instance == null) { lock (lockHelper) { if (instance == null) { instance = new Singleton(); } } } return instance; } } }
一个比较简单的实现:
public class Singleton { public static readonly Singleton instance = new Singleton(); private Singleton() { } }
相关文章推荐
- 设计模式之单件(Singleton)的应用
- ISingletonDisplayer 单件模式显示器C#实现
- Singleton(单件)模式与类静态函数(实用类)的区别
- [整理]C#面向对象设计模式纵横谈(2):Singleton单件(创建型模式)
- 《设计模式精解》学习笔记(十二)------Singleton(单件)模式
- java设计模式之创建模式--singleton
- 创建型模式-单件 Creational Patterns-Singleton
- 设计模式之-----单件(singleton)
- Singleton(单件)模式与类静态函数(实用类)的区别
- 设计模式(五)[单件(Singleton)模式]
- 设计模式入门(1)------单件(Singleton)
- 设计模式之单件模式(Singleton)
- C#面向对象设计模式:Singleton 单件(创建型模式)
- Singleton(单件)模式与类静态函数(实用类)的区别
- 创建型模式——Singleton 单件模式
- 单实例模式的实现(singleton)----单件
- 单件模式(singleton)
- C#面向对象设计模式纵横谈(2): Singleton单件(创建型模式)
- C#面向对象设计模式 学习之旅(二) - Singleton 单件模式(创建型)
- (创建型模式)Singleton 单件模式