gpt4 book ai didi

java - 有没有更好的方法来引用包含对象的对象?

转载 作者:行者123 更新时间:2023-12-02 03:26:22 25 4
gpt4 key购买 nike

对于我迄今为止所做的许多应用程序,总是有一些类包含许多其他类。例如,我可能有一个包含宠物的 Player 类。然而,我希望有时能够通过宠物来引用玩家。以下代码将适用于此:

public class Player {
Pet p;
public Player() {
p = new Pet(this);
}
}

public class Pet {
Player owner;
public Pet(Player owner) {
this.owner = owner;
}
}

如果我想通过宠物引用玩家,那么当然,我可以只使用 owner 变量。但有没有更好的方法来做到这一点?我经常会有包含类的类包含类等,所以我的Player类将拥有一个Pet,它可能有一个Toy,然后Toy有对Player的引用。天哪,我什至可能有高于玩家的类,例如世界城市中的建筑物。因此,宠物玩具可能涉及整个世界。我觉得必须有更好的方法来做到这一点。

最佳答案

I feel like there must be a better way to do this.

嗯,这确实取决于规模。当您的对象模型非常小,并且您(非常)确定在接下来的几个月或几年内不会有重大增强时……那么这种简单的“双重簿记”可能是一个合理的答案。

但在更现实的场景中:是的,这种方法很快就会失效。

研究领域驱动设计的想法通常会有所帮助。首先:看看您正在建模的内容。当然,我的宠物狗认识我,但它不知道“拥有”的概念,它不知道我是他的主人。

因此,第一个解决方案可能是:只需从 Pet 类中删除 owner 部分即可。相反,您可能想要创建某种索引。以最简单的形式,这可能是一张 map 。某些中央登记处被告知,人 X 拥有宠物 Y。现在您的代码可以去询问 Y 是否知道 X 的所有者。

回到 DDD,你谈论的是聚合。以某种方式属于在一起的事物。但是您不能只访问任何成员,您总是必须通过一些元素。请参阅here例如。

关于java - 有没有更好的方法来引用包含对象的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56905697/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com