Java一个包含其他兄弟姐妹的子类

时间:2014-02-17 12:08:33

标签: java inheritance

我看到一些代码有一个包含其他兄弟姐妹的子类。例如,下面的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
{
  ...
}

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

你不应该为兄弟姐妹制作不同的课程。如果明天有人有四个兄弟姐妹,那么你将完成四个班级。这将导致Class Exposion。

您的设计可以像:

家长班:

public class Parent{

   ...
}

儿童班:

public final class Child extends Parent{

  private List<Child> siblings;
  ...
}