Singleton Pattern 属于创造型设计模式,提供一种建立对象的方法,涉及一个单一类的实例,确保一个类只建立一个对象,提供访问惟一对象的方法,能够直接访问,不须要建立。设计模式
目的:一个类只建立一个实例
优势:减小全局使用该类的频繁建立与销毁,节省系统资源,避免对资源的多重占用
缺点:没有借口,不能够被继承,与单一职责冲突,一个类应该只关心本身内部逻辑,不关心外部调用实例状况多线程
实例应用:
多进程多线程,操做同一个文件时,多个线程同时操做一个文件的时候,全部文件应该经过同一个实例操做函数
实现:线程
Code:设计
public class SingletonObject { // 惟一实例 private static SingletonObject singleton; // 私有构造函数(限制外部实例化) private SingletonObject() { } // 方式一: /// <summary> /// 提供外部获取该类实例的静态方法(可带参数) /// </summary> /// <returns>SingletonObject</returns> public static SingletonObject getInstance1() { if (singleton == null) singleton = new SingletonObject(); return singleton; } // 方式二: // 只读属性(没法带参数) public static SingletonObject getInstance2 { get { if (singleton == null) singleton = new SingletonObject(); return singleton; } } /// <summary> /// 类内部方法 /// </summary> /// <returns></returns> public string FuncName() { return "This is Singleton Pattern"; } }
外部调用:code
string s1 = SingletonObject.getInstance1().FuncName(); // 方法
对象
string s2 = SingletonObject.getInstance2.FuncName(); // 属性
继承