【问题标题】:Is it possible to inherit a singleton class with a base class (non-singleton class). If yes, is it a good practice?是否可以使用基类(非单例类)继承单例类。如果是,这是一个好习惯吗?
【发布时间】:2019-07-29 08:52:09
【问题描述】:

我实际上是在尝试实现一个单例类扩展非单例类的东西。

我尝试阅读多个答案,但没有一个回答我的问题。

class Parent{
    // Code goes here
}

class MySingleton extends Parent{
    // Code goes here
}

我现在有 2 个问题。

1) 这在 java/kotlin 中是否可行?

2) 如果是,这是一个好习惯吗?请提供一些参考。

【问题讨论】:

  • 1) 是的。为什么不呢? 2) 不,singleton is an anti-pattern
  • 1) 是的 2) 很大程度上取决于
  • 感谢大家的帮助。真的很感激。

标签: java inheritance singleton


【解决方案1】:

1) 这在 java 中可行吗?

是的,但是。

这取决于你如何实现你的单例。多年来,单例已成为一种反模式,当您仍在使用它时,最好使用 枚举

public enum SomeSingleton { 
  INSTANCE;
  ...

当然:当您想扩展父类时,这不起作用。

2) 如果是,这是一个好习惯吗?请提供一些参考。

如前所述,如今单例(大多数情况下)被认为是不好的做法。所以添加 another 约束肯定不会让事情变得更好。

从概念上讲,这听起来是错误的。如果有人这样做怎么办:

List<Parent> someInstances = Arrays.asList(parentInstanceA, parentInstanceB, thatSingletonInstanceOfMySingleton);

突然之间,你有很多东西当然不完全相同,但是,它们都很好地进入了那个列表。

长话短说:我不会这样做。如果有,请使用 枚举,然后考虑使用组合而不是继承。

【讨论】:

  • 非常感谢您的详细解释。非常感谢您的帮助。
  • @VrajeshHirani 我也很感谢您的快速和善意的回应!
猜你喜欢
  • 1970-01-01
  • 2014-04-03
  • 2010-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多