我看到一些代码有一个包含其他兄弟姐妹的子类。例如,下面的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
{
...
}
答案 0 :(得分:1)
从技术角度来看,您发布的代码没有任何问题,但它让我怀疑这是否是建模您的域的正确方法。从您的域名的角度来看,Child1与Child2和Child3交谈是否有意义?或者这只是一种将代码分离为逻辑部分的机制?
在可能的情况下,应该避免使用大的继承树,因为继承是最强的耦合形式。也许您可以使用策略模式实现相同的功能以减少耦合。
答案 1 :(得分:0)
你不应该为兄弟姐妹制作不同的课程。如果明天有人有四个兄弟姐妹,那么你将完成四个班级。这将导致Class Exposion。
您的设计可以像:
家长班:
public class Parent{
...
}
儿童班:
public final class Child extends Parent{
private List<Child> siblings;
...
}