C#设计模式——单例
单例模式是设计模式中最简单的形式之一。这一模式的目的是使得类的一个对象成为系统中的唯一实例。对于系统中的某些类来说,只有一个实例很重要,例如,一个系统中可以存在多个打印任务,但是只能有一个正在工作的任务;一个系统只能有一个窗口管理器或文件系统;一个系统只能有一个计时工具或ID(序号)生成器。
显然单例模式的要点有三个;一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。
从具体实现角度来说,就是以下三点:一是单例模式的类只提供私有的构造函数,二是类定义中含有一个该类的静态私有对象,三是该类提供了一个静态的公有的函数用于创建或获取它本身的静态私有对象。
C#实现单例类的方法有很多,具体可见:http://csharpindepth.com/Articles/General/Singleton.aspx#unsafe
本文介绍两种实现方式:
方法一(推荐):
class SingleOne { static SingleOne m_Instance = null; static SingleOne() { m_Instance = new SingleOne(); } private SingleOne() { // code: 其它需要构造函数来处理代码 } public static SingleOne Instance { get { return m_Instance; } } }
方法二:
public class SingleOne { static SingleOne m_Instance = null; private static readonly object obj4Lock = new object(); private SingleOne() { // code: 其它需要构造函数来处理代码 } public static SingleOne Instance { get { if (m_Instance == null) { lock (obj4Lock) { if (m_Instance == null) { m_Instance = new SingleOne(); } } } return m_Instance; } } }