创建型设计模式。保证一个类仅有一个实例,并提供一个访问它的全局访问点。
单线程单例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| public class Single { //声明静态变量 private static Single Instance; //构造函数,不设置的话,默认是一个public的构造函数 private void Single(); //暴露的方法 public Single GetInstance() { if(Instance == null) { Instance = new Single(); } return Instance; } }
|
多线程单例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| public class Single { private static Singel Instance; object obj = new object(); private void Single(); public Single GetInstance() { if(Instance == null) { lock(obj) { if(Instance == null) { Instance = new Single(); } } } return Instance; } }
|
极简写法
1 2 3 4 5
| public class Single { public static readonly Single Instance = new Single(); private void Single(); }
|
等同于
1 2 3 4 5 6 7 8 9
| public class Single { public static readonly Single Instance; private void Single(); private static Single() { return new Single(); } }
|