Java类:我需要在类中添加一个String类型的新字段。我应该扩展(创建一个新的派生类)还是只添加新的字段?

时间:2016-08-19 05:10:05

标签: java class oop object-oriented-analysis

我试图了解有关此问题的最佳做法。我有一个有一些领域的课。现在我需要添加一个String类型的新字段。

该类的大多数实例不需要这个新的String字段,因此不会为这些实例设置它。有些实例会设置此字段。

那么我应该创建一个新的子类并将后一个实例创建为该子类吗?请说明原因。

2 个答案:

答案 0 :(得分:2)

案例:您希望将String color添加到Car,但它不会用于许多用法。

我不会在这里创建一个子类,但添加:

Optional<String> color = Optional.empty();

原因:

  • (正式)这是一个有关系,而不是一个是-a。
  • 现有部件不会改变业务逻辑
  • 影响最小。

我不喜欢null""初始化,或使用Optional

答案 1 :(得分:0)

您的问题的答案取决于许多事情(系统处于生产状态,系统具有多少复杂性等),因此不仅有一个答案。

但在我阅读你的问题时,我提到了一些似乎是常见错误“该类的大多数实例都不需要这个新的字符串字段”

请记住,此声明是代码味道。因为您将“额外知识”添加到不需要的对象中。这个类的更多抽象是解决这个问题的唯一方法。