所謂單例模式即所謂的一個類只能有一個實例,說白了,也就是類只能在內部實例一次,而後提供這一實例,外部沒法對此類實例化。安全
單例模式的特色:多線程
一、只能有一個實例;spa
二、只能本身建立本身的惟一實例;線程
三、必須給全部其餘的對象提供這一實例。code
單例模式的建立方法:對象
一、沒有考慮多線程安全問題blog
public class Singleton { private static Singleton _instance = null; private Singleton(){} public static Singleton CreateInstance() { if(_instance == null) { _instance = new Singleton(); } return _instance; } }
二、考慮多線程安全class
public class Singleton { private volatile static Singleton _instance = null; private static readonly object _lockrobject = new object(); private Singleton(){} public static Singleton CreateInstance() { if(_instance == null) { lock(_lockrobject ) { if(_instance == null) _instance = new Singleton(); } } return _instance; } }
三、C#,本身主動建立實例object
public class Singleton { private Singleton(){} public static readonly Singleton instance = new Singleton(); }
單例模式的應用:方法
一、MDI窗體使用單例模式能夠防止窗體被實例化屢次。