【问题标题】:Java one child class containing other siblingsJava 一个包含其他兄弟的子类
【发布时间】:2014-02-17 12:08:32
【问题描述】:

我看到一些代码有一个包含其他兄弟的子类。例如,下面的 Child1 包含其兄弟 Child2、Child3。请问这个设计有问题吗?

public class Parent
{
   ...
}

public final class Child1 extends Parent
{
  private Child2 child2;
  private Child3 child3;
  ...
}

public final class Child2 extends Parent
{
  ...
}

public final class Child3 extends Parent
{
  ...
}

【问题讨论】:

  • 并非如此。你有什么特别担心的吗?
  • 为什么会有问题?
  • 我认为这主要取决于您要对儿童班做什么。不过,我对类声明中的() 有点困惑
  • “包含”的使用可能会产生误导:最好说“具有类型属性”或“引用”
  • 这在不知道代码意图的情况下很难说...

标签: java inheritance


【解决方案1】:

从技术角度来看,您发布的代码没有任何问题,但这让我怀疑这是否是为您的域建模的正确方法。从您的域的角度来看,Child1 与 Child2 和 Child3 交谈是否有意义?或者这只是将代码分成逻辑部分的一种机制?

还应尽可能避免使用大的继承树,因为继承是最强的耦合形式。也许您可以使用策略模式来实现相同的功能以减少耦合。

【讨论】:

    【解决方案2】:

    你不应该为兄弟姐妹创建不同的类。如果明天某人有四个兄弟姐妹,那么您将参加四个班级。这将导致类暴露。

    你的设计可以是这样的:

    父类:

    public class Parent{
    
       ...
    }
    

    儿童班:

    public final class Child extends Parent{
    
      private List<Child> siblings;
      ...
    }
    

    【讨论】:

    • 我认为 OP 是在谈论他的继承结构树而不是对父子关系建模。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-28
    • 2021-02-25
    相关资源
    最近更新 更多