我们应该密封单身人士吗?我们应该首先尝试从单身人士继承吗?

dev*_*ium 5 c# java inheritance singleton

Singleton课程应该允许生孩子吗?我们应该密封吗?优缺点都有什么?

为了能够从Singleton类继承,我们必须使构造函数受保护而不是私有.现在,这在c#中会很好,但java中受保护的单词给了子类和包类访问构造函数.这意味着不仅从我们的Singleton继承的类可以访问构造函数,而且同一个包中的其他类也可以这样做.

我对这些事实感到有些困惑.也许我正在做一件大惊小怪的事情,不用太担心?到现在为止,我从来没有必要尝试继承单身人士,所以也许这只是一个学术问题!

谢谢

Tru*_*ill 8

更好的解决方案是使用IoC容器框架来处理类的"Singleton"(生命周期)方面.此时,您可以使用POJO并简单地继承它.

编辑:一些可能有用的链接:

寻找那些处理终身管理的人.您希望能够配置容器(其作用类似于通用工厂),以便对"Singleton"类的实例的请求始终返回相同的实例(至少对于同一容器).通常,只有一个容器实例位于应用程序的最高级别.


Aar*_*ght 8

是的,单身人士应该密封.不,他们不应该继承.

其原因是,主(真一个Singleton的)行为是在某个预定的时间来创建自己的一个实例.由于此功能是静态的,因此无法覆盖,因此必须重复此功能.一旦你开始复制,你有一个单例的多个实例,这没有多大意义.

无论是那种,你最终都会遇到竞争条件或其他冲突,因为"派生"的单身人士争夺对全球实例的控制权,这不仅没有意义,而且是危险的.

Singleton继承问题有一些破解性的解决方法,但这就是它们 - 黑客.Singleton模式不适合继承.