【问题标题】:Sealed class and Singleton密封类和单例
【发布时间】:2014-12-10 18:06:06
【问题描述】:

我在看Jon Skeet's implementation of Singleton

我对此有几个问题:

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

有什么建议吗?

【问题讨论】:

    标签: c# design-patterns static singleton


    【解决方案1】:
    1. 如果它不是密封的,那么有人可以创建它的派生类型,创建这些类型的实例,然后突然之间你就有了多个“单例”实例。

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

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

    【讨论】:

    • If it's not sealed then someone can create derived types of it, create instances of those types... 但是如果单例有一个私有构造函数,则派生类将无法编译。
    • @Shoe Nope。这是可能的。邪恶,但可能。责备乔恩·斯基特打开潘多拉魔盒。
    • 非常邪恶。感谢您的链接
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-07
    • 2017-03-13
    • 1970-01-01
    • 2021-12-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多