我正在看Jon Skeet's implementation of Singleton .
我对此有几个问题:
- 为什么该类被密封?
- 如果我不想将其密封怎么办?它会破坏我的单例实现吗?
- 我选择 Singleton 而不是 static 的主要原因之一是因为我希望我的类在继承中是开放的。如果最终我要将其密封并使其没有任何类型的继承,那么为什么不静态呢?
有什么建议吗?
最佳答案
如果它没有被密封,那么有人可以创建它的派生类型,创建这些类型的实例,然后突然间您就拥有了多个“单例”实例。
它将允许人们创建额外的实例。如果您不在乎他们是否这样做,和/或知道没有人会费心去尝试,那么您当然可以解封该类。当然,使类显式不密封的唯一原因是创建派生类型,这几乎肯定需要创建该类型的多个实例。这意味着你几乎肯定不再有单例。当然,拥有一个非实际单例类型可能适合您的情况,在这种情况下,请继续。
如果将其设置为静态,则无法创建要使其成为单例的one实例;你只能拥有零。
关于c# - 密封类和单例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27407892/