首页 / JAVA / java设计:子对象的重复方法
java设计:子对象的重复方法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java设计:子对象的重复方法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1940字,纯文字阅读大概需要3分钟。
内容图文
当我在处理我的一个项目并且不得不使用大量嵌套对象时,当我想从上层对象设置一个深层嵌套对象的实例变量时,我变得非常不确定我在Java中的结构设计.感觉我错过了对Java中结构化设计的基本理解.对此有任何见解表示赞赏.
想象一下,我有一个具有嵌套子对象作为变量的逻辑结构的对象.例如:
Country
Capital
Palace
King
如果我现在想要在主对象(Country)中设置King中的私有String变量’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类.
现在我想你可以在技术上说国王也可以在国家中定义,废除宫殿和资本中的额外方法,但它仍然意味着方法必须存在于国家类中,如果这种结构有意义如在逻辑组合在一起,最好的方法是什么?我不确定有更好的方法,但我不能动摇我在这里遗漏的感觉.
解决方法:
这是一个责任问题.
问问自己:“谁有责任知道国王是谁?”.当你是宫殿时,你对国王负责吗?显然不是.国王不是由你的宫殿管理,但他依法依附于你的国家.
查询palace.setNameOfKing()类似于要求你的房子给你的新生儿一个名字.你的房子没有这种应对能力,不应该被允许这样做.
正确的方法是检索King实例,并直接设置其名称.
现在这种方法存在一个问题:您可能必须使用许多getter才能找到King实例.但是您可以使用类的功能方法来解决此问题.
palace.getOwner()可以返回一个接口所有者与King实现所有者.
相同的规则可以应用于您的其他类.
内容总结
以上是互联网集市为您收集整理的java设计:子对象的重复方法全部内容,希望文章能够帮你解决java设计:子对象的重复方法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。