1. Singleton 单例模式(创建型模式)   

模式分类

从目的来看:

创建型(Creational)模式:将对象的部分创建工作延迟到子类或者其他对象,从而应对需求变化为对象创建时具体类型实现引来的冲击。

结构型(Structural)模式:通过类继承或者对象组合获得更灵活的结构,从而应对需求变化为对象的结构带来的冲击。

行为型(Behavioral)模式:通过类继承或者对象组合来划分类与对象间的职责,从而应对需求变化为多个交互的对象带来的冲击。

从范围来看:

类模式处理类与子类的静态关系;对象模式处理对象间的动态关系。

动机(Motivation)

在软件系统中,经常面临着创建对象的工作;由于需求的变化,需要创建的对象的具体类型经常变化。

如何应对这种变化?如何绕过常规的对象创建方法(new),提供一种封装机制来避免客户程序和这种具体对象创建工作的紧耦合?

意图(Intent

单例模式保证应用只有一个全局唯一的实例,并且提供一个访问它的全局访问点。

定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method使得一个类的实例化延迟到子类。                        ——设计模式 GoF

 

设计模式笔记 1.Singleton 单例模式(创建型模式) 

设计模式笔记 1.Singleton 单例模式(创建型模式)//单线程时的单例模式
设计模式笔记 1.Singleton 单例模式(创建型模式)
private static Singleton instance;
设计模式笔记 1.Singleton 单例模式(创建型模式)
设计模式笔记 1.Singleton 单例模式(创建型模式)
//构造方法让其private,这就堵死了外界利用new创建此类实例的可能
设计模式笔记 1.Singleton 单例模式(创建型模式)
private Singleton()
}

 

设计模式笔记 1.Singleton 单例模式(创建型模式)//客户端代码
设计模式笔记 1.Singleton 单例模式(创建型模式)
static void Main(string[] args)
}

 

设计模式笔记 1.Singleton 单例模式(创建型模式)//多线程时的单例模式
设计模式笔记 1.Singleton 单例模式(创建型模式)
private static Singleton instance;
设计模式笔记 1.Singleton 单例模式(创建型模式)
private static readonly object syncRoot = new object();//程序运行时创建一个静态只读的进程辅助对象
设计模式笔记 1.Singleton 单例模式(创建型模式)

设计模式笔记 1.Singleton 单例模式(创建型模式)
private Singleton()
}

 

设计模式笔记 1.Singleton 单例模式(创建型模式)
设计模式笔记 1.Singleton 单例模式(创建型模式)
//静态初始化
设计模式笔记 1.Singleton 单例模式(创建型模式)
public sealed class Singleton //sealed阻止发生派生,而派生可能会增加实例
}