一、 单例(Singleton)模式

单例模式的特点:

  • 单例类只能有一个实例。
  • 单例类必须自己创建自己的唯一实例。
  • 单例类必须给所有其它对象提供这一实例。

 

三种实现方式

1 双重锁定

 1C#设计模式-Singleton Patternpublic sealed class Singleton
 2

 

这种实现方式对多线程来说是安全的,同时线程不是每次都加锁,只有判断对象实例没有被创建时它才加锁,有了我们上面第一部分的里面的分析,我们知道,加锁后还得再进行对象是否已被创建的判断。它解决了线程并发问题,同时避免在每个 Instance 属性方法的调用中都出现独占锁定。它还允许您将实例化延迟到第一次访问对象时发生。实际上,应用程序很少需要这种类型的实现。大多数情况下我们会用静态初始化。这种方式仍然有很多缺点:无法实现延迟初始化。

 

2 静态初始化

 sealed class Singleton
}

 

延迟初始化

 延迟初始化

 1C#设计模式-Singleton Patternpublic sealed class Singleton
 2

 

这里,初始化工作有Nested类的一个静态成员来完成,这样就实现了延迟初始化,并具有很多的优势,是值得推荐的一种实现方式。

 

相关文章:

  • 2021-10-26
  • 2021-08-14
  • 2021-06-08
  • 2021-12-21
  • 2021-11-03
  • 2022-12-23
  • 2022-01-17
猜你喜欢
  • 2021-08-11
  • 2021-12-16
  • 2021-10-07
相关资源
相似解决方案