是否应该允许 Singleton 类有孩子?我们应该密封它吗?优缺点都有什么?
为了能够从 Singleton 类继承,我们必须将构造函数设置为受保护的而不是私有的。现在,这在 c# 中没问题,但 java 中的 protected 字允许子类和包类访问构造函数。这意味着不仅从 Singleton 继承的类可以访问构造函数,同一包中的其他类也可以这样做。
我对所有这些事实有点困惑。也许我是在无忧无虑地大惊小怪?到目前为止,我从来没有必要尝试从单例继承,所以也许这只是一个学术问题!
Thanks
是的,单身人士应该被密封。不,它们不应该被继承。
原因是主要的(实际上only)单例的行为是在某个预定的时间创建它自己的实例。由于此功能是静态的,因此无法覆盖它,因此必须复制它。一旦开始复制,就会有多个单例实例,这实际上没有意义。
要么这样,要么当“派生”单例争夺对全局实例的控制权时,您最终会遇到竞争条件或其他冲突,这不仅没有意义,而且很危险。
对于单例继承问题有一些黑客的解决方法,但它们就是黑客。 Singleton模式其实不太适合继承。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)