Lorsque je travaillais sur un de mes projets et que je devais utiliser beaucoup d'objets imbriqués, je suis devenu très incertain de ma conception de la structure en Java quand je voulais définir une variable d'instance d'un objet profondément imbriqué de l'objet supérieur. Il me semble que je manque une compréhension de base peut-être de la conception structurée en Java. Toute idée à ce sujet est appréciée. Imaginez que j'ai un objet qui a une structure logique d'avoir sous-objets imbriqués en tant que variables. Par exemple:java design: méthodes répétitives de sous-objets
Country
Capital
Palace
King
Si je veux maintenant définir une chaîne variable privée « nameOfKing » à King de l'objet principal (Pays), je dois définir toutes les méthodes dans toutes les classes supérieures du roi. Donc, quelque chose comme ceci:
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;
}
}
afin que je puisse appeler country.setNameOfKing(n);
. Maintenant, c'est bien si vous avez juste quelques variables, mais que se passe-t-il si les classes King, Palace, Capital ont chacune de nombreuses autres variables et méthodes définies et doivent toutes être appelées depuis Country. Que se passe-t-il si Palace contient aussi d'autres objets comme ThroneRoom, Treasury, Queen, etc ... Cela signifie que pour presque toutes les méthodes des sous classes, il faut exister dans la classe Country, ce qui pourrait Cela signifie potentiellement que vous devez créer une énorme quantité de méthodes simplement pour transmettre des informations aux sous-objets résultant en une très grande classe de pays. Maintenant je suppose que techniquement on pourrait dire que King pourrait aussi être défini dans le pays lui-même, en supprimant les méthodes supplémentaires dans Palace et Capital, mais cela voudrait quand même dire que les méthodes doivent exister dans la classe Country et si cette structure a du sens car en logique groupée, quelle serait la meilleure approche pour cela? Je ne suis pas sûr qu'il y ait un meilleur moyen, mais je ne peux pas oublier que j'ai oublié quelque chose ici.
donc 'getPalace(). SetFoo()' n'est pas une option? –
Donc, vous voulez dire changer le methid dans la classe Country comme ça? 'capital.getPalace().setNameOfKing (n); 'Cela changerait le fait que vous pourriez potentiellement avoir une grande quantité de méthodes dans la classe Country – lokipoki