單例模式即所謂的一個類只能有一個實例, 也就是類只能在內部實例一次,然后提供這一實例,外部無法對此類實例化。
單例模式的特點:
1、只能有一個實例;
2、只能自己創建自己的唯一實例;
3、必須給所有其他的對象提供這一實例。
普通單例模式(沒有考慮線程安全)
/// <summary> /// 單例模式 /// </summary> public class Singleton { private static Singleton singleton; private Singleton() { } /// <summary> /// 獲取實例-線程非安全模式 /// </summary> /// <returns></returns> public static Singleton GetSingleton() { if (singleton == null) singleton = new Singleton(); return singleton; } }
考慮多線程安全
/// <summary> /// 單例模式 /// </summary> public class Singleton { private static object obj = new object(); private static Singleton singleton; private Singleton() { } /// <summary> /// 獲取實例-線程安全 /// </summary> /// <returns></returns> public static Singleton GetThreadSafeSingleton() { lock (obj) { if (singleton == null) { singleton = new Singleton(); } } return singleton; } }