单身继承

max*_*ack 12 singleton design-patterns

如何从单例类继承到需要相同功能的其他类?这样的事情会有意义吗?

Aar*_*ght 13

Jon Skeet不久前写了这篇文章.使用Singleton 可以实现继承的一些好处,尽管使用嵌套的内部类确实有一些不足之处.它没有无限的可扩展性,它只是让Singleton在运行时选择自己的实现的技术.

实际上,继承Singleton并没有太大意义,因为Singleton模式的一部分是实例管理,一旦你已经拥有了一个基本类型的物理实例,那么在派生类型中覆盖任何这个都是为时已晚.即使你可以,我怀疑它可能会导致设计难以理解,甚至更难以测试/维护.


Nic*_*ver 0

有人可以随意纠正我,但我理解它的方式,并且曾经犯过一个错误:

public class BaseClass
{
  protected static List<string> ListOfSomething { get; set; }
}

public class ChildClass
{
  protected static List<int> ListOfSomethingElse { get; set; }
}

public class AnotherChildClass
{
  protected static List<int> ListOfSomethingElse { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

两个子类都会共享相同的 ListOfSomething,他们不会有自己的副本。相同的静态静态数据将在所有孩子之间共享。这是单例行为和继承的蜕变。正如 Silky 所说……你不应该这样做,你可能会遇到类似的情况

如果你不是在谈论这样的事情......我不确定你在谈论什么单例,一个例子会有很大帮助,因为单例有很多利基用途。