所謂單例模式即所謂的一個類只能有一個實例,說白了,也就是類只能在內部實例一次,然后提供這一實例,外部無法對此類實例化。
單例模式的特點:
1、只能有一個實例;
2、只能自己創建自己的唯一實例;
3、必須給所有其他的對象提供這一實例。
單例模式的創建方法:
1、沒有考慮多線程安全問題
public class Singleton { private static Singleton _instance = null; private Singleton(){} public static Singleton CreateInstance() { if(_instance == null) { _instance = new Singleton(); } return _instance; } }
2、考慮多線程安全
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; } }
3、C#,自己主動創建實例
public class Singleton { private Singleton(){} public static readonly Singleton instance = new Singleton(); }
單例模式的應用:
1、MDI窗體使用單例模式可以防止窗體被實例化多次。