设置
我的 Java 代码包含两个对象:Group 和 Person。每个组可以包含对多个人员的引用,但每个人员只能属于一个组。
每个人 Jersey 的颜色都源自其所在组的颜色。 (注意:如果他们不属于某个组,则他们的毛衣是灰色的。)
当我在屏幕上绘制人物时,我会吸收人物本身和颜色。
代码
人
public class Person {
Color sweatshirtColor = Color.gray;
Group belongsToGroup = null;
public void setGroup(Group g) { belongsToGroup = g; }
}
组
public class Group {
Color color = Color.red;
List<Person> people = new ArrayList<Person>();
// ... setters for adding and getting people
}
抽奖
public void draw(Person dudette, Color shirtColor) { //... }
问题 Group 和 Person 都互相引用 - 我担心其中一个可能会与另一个不同步。我的绘制代码必须修复(因为它是外部的),但是我在这个设计中做错了什么明显的事情吗?
编辑:还有一个注释 - 小组可以在整个计划中更改。一个人的组取决于他们的位置,因此他们会不断切换组。
最佳答案
您可以向每个类引入 setter,这将允许任一实体修改另一个实体及其自身,以便它们永远不会失去同步。例如
class Group {
List<Person> people;
void removePerson(Person p) {
if(people.remove(p))
p.removeFromGroup();
}
}
class Person {
Group grp;
void removeFromGroup() {
grp.removePerson(this);
grp = null;
}
}
您可以执行相同的操作来添加群组成员。
关于java - 有没有什么方法可以设计我的 Java 代码,使这两个对象不引用自身?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12202603/