当我在做我的一个项目并且不得不使用很多嵌套对象时,当我想从上层对象设置一个深度嵌套对象的实例变量时,我变得非常不确定我在 Java 中的结构设计。感觉就像我错过了对 Java 中结构化设计的基本理解。对此的任何见解都值得赞赏。
想象一下,我有一个对象,它具有将嵌套子对象作为变量的逻辑结构。例如:
Country
Capital
Palace
King
如果我现在想从主对象(国家)在 King 中设置一个私有字符串变量“nameOfKing”,我必须在 King 的所有上层类中定义每个方法。所以是这样的:
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 都定义了许多其他变量和方法,并且所有这些变量和方法都必须从 Country 调用。如果 Palace 还包含其他类对象,例如(现在只是编造一些东西)ThroneRoom、Treasury、Queen 等会怎么样...这意味着对于子类中的几乎所有方法,Country 类中都必须存在一个,这可能可能意味着您必须创建大量方法来将信息传递给子对象,从而导致非常大的 Country 类。
现在我想你可以从技术上说 King 也可以在 Country 本身中定义,取消 Palace 和 Capital 中的额外方法,但这仍然意味着方法必须存在于 Country 类中,如果这种结构有意义怎么办就像逻辑组合在一起一样,最好的方法是什么?我不确定有没有更好的方法,但我无法摆脱我在这里错过了什么的感觉。