密封类和单例

本文关键字:单例 密封类 | 更新日期: 2023-09-27 18:33:49

我正在研究Jon Skeet对Singleton的实现。

我对此有几个问题:

  1. 为什么班级是密封的?
  2. 如果我不想密封怎么办?它会破坏我的单例实现吗?
  3. 我选择单例反对静态的主要原因之一是因为我希望我的类在继承中是开放的。如果最终,我要把它封印起来,让它没有任何继承,那为什么不静态呢?

有什么建议吗?

密封类和单例

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

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

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