当我正在研究我的一个项目并且不得不使用很多嵌套对象时,当我想要设置一个实例变量时,我变得非常不确定我在Java中的结构设计来自上层对象的深度嵌套对象。这感觉就像我错过了对Java中结构化设计的基本理解。任何有识之士都会受到赞赏。java设计:子对象的重复方法
想象一下,我有一个具有嵌套子对象作为变量的逻辑结构的对象。例如:
Country
Capital
Palace
King
如果我现在想从主客体(国家)设置在国王的私人字符串变量“nameOfKing”,我会在所有的上层阶级王来定义每个方法。所以像这样:
public class Country {
private Capital capital;
public void setNameOfKing(String n) {
capital.setNameOfKing(n);
}
}
public class Capital{
private Palace palace;
public void setNameOfKing(String n) {
palace.setNameOfKing(n);
}
}
public class Palace{
private King king;
public void setNameOfKing(String n) {
king.setNameOfKing(n);
}
}
public class King{
private String nameOfKing;
public void setNameOfKing(String n) {
this.nameOfKing = n;
}
}
这样我可以拨打country.setNameOfKing(n);
。现在如果你只有几个变量就没有问题,但如果King,Palace,Capital这两个类别都定义了许多其他变量和方法,并且所有这些变量都必须从国家调用,那该怎么办?如果Palace还包含其他类对象(如现在只是制作东西)ThroneRoom,Treasury,Queen等等......这将意味着对于子类中的几乎所有方法而言,必须存在于Country类中,这可能会可能意味着你必须创建大量的方法来简单地将信息传递给导致非常大的Country类的子对象。
现在我想你可以在技术上说国王也可以在国家自己定义,废除宫殿和资本中的额外方法,但它仍然意味着方法必须存在于Country类中,如果这种结构在逻辑分组时是有意义的,那么最好的办法是什么?我不确定是否有更好的方法,但我不能动摇我在这里错过的东西。
so'getPalace()。setFoo()'不是一个选项? –
所以你的意思是像这样改变Country类的方法? 'capital.getPalace()。setNameOfKing(n);'这将改变你可能在Country类中有很多方法的事实 – lokipoki