c# - 密封类和单例

标签 c# design-patterns static singleton

我正在看Jon Skeet's implementation of Singleton .

我对此有几个问题:

  1. 为什么该类被密封?
  2. 如果我不想将其密封怎么办?它会破坏我的单例实现吗?
  3. 我选择 Singleton 而不是 static 的主要原因之一是因为我希望我的类在继承中是开放的。如果最终我要将其密封并使其没有任何类型的继承,那么为什么不静态呢?

有什么建议吗?

最佳答案

  1. 如果它没有被密封,那么有人可以创建它的派生类型,创建这些类型的实例,然后突然间您就拥有了多个“单例”实例。

  2. 它将允许人们创建额外的实例。如果您不在乎他们是否这样做,和/或知道没有人会费心去尝试,那么您当然可以解封该类。当然,使类显式密封的唯一原因是创建派生类型,这几乎肯定需要创建该类型的多个实例。这意味着你几乎肯定不再有单例。当然,拥有一个非实际单例类型可能适合您的情况,在这种情况下,请继续。

  3. 如果将其设置为静态,则无法创建要使其成为单例的one实例;你只能拥有

关于c# - 密封类和单例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27407892/

相关文章:

c# - 将列表的最后一个元素与之前的元素进行比较的简化语法?

c# - 用于验证百分比的正则表达式

对象构造函数访问中对象的 C++ 静态 vector ?

java - 如何锁定(同步)静态类?

c++ - 未定义的静态变量引用 C++

c# - Task<T>.Convert<TResult> 扩展方法有用还是有隐患?

c# - 将 DateTime 转换为 unix 时间戳并再次转换回来 - 结果不相等

oop - 违反 SRP、Demeter 法则等的影响

design-patterns - 是否有合并重复数据库记录的设计模式?

c - 使用 if/else 中几乎相同的语句减少 C 程序中的代码重复?