最近做了一个关于单例模式类的实现及方法调用
创建一个单例模式:
1 /// <summary> 2 /// 单例模式: 3 /// </summary> 4 public class Singleton 5 { 6 // 定义一个静态变量来保存类的实例 7 public static Singleton Instance; 8 9 // 定义一个标识确保线程同步 10 private static readonly object locker = new object(); 11 12 // 定义私有构造函数,使外界不能创建该类实例 13 private Singleton() {} 14 15 /// <summary> 16 /// 定义公有方法提供一个全局访问点,同时你也可以定义公有属性来提供全局访问点 17 /// </summary> 18 /// <returns></returns> 19 public static Singleton GetInstance() 20 { 21 // 当第一个线程运行到这里时,此时会对locker对象 "加锁", 22 // 当第二个线程运行该方法时,首先检测到locker对象为"加锁"状态,该线程就会挂起等待第一个线程解锁 23 // lock语句运行完之后(即线程运行完之后)会对该对象"解锁" 24 // 双重锁定只需要一句判断就可以了 25 if (Instance == null) 26 { 27 lock (locker) 28 { 29 // 如果类的实例不存在则创建,否则直接返回 30 if (Instance == null) 31 { 32 Instance = new Singleton(); 33 } 34 } 35 } 36 return Instance; 37 } 38 39 /// <summary> 40 /// 41 /// </summary> 42 private void InitLoad() 43 { 44 45 // 其他逻辑代码 46 } 47 48 }
方法调用:
Singleton.GetInstance().InitLoad();//单例模式:方法调用