gpt4 book ai didi

java - 我怎样才能最好地让一个类(class)为另一个类(class)提供一些东西?

转载 作者:行者123 更新时间:2023-12-01 13:06:06 24 4
gpt4 key购买 nike

我遇到了一些尴尬的情况,从某种意义上来说,这些情况似乎是相互对立的,我想知道是否有人对如何干净地处理它们有任何想法。

外部初始化

class Human {
Collection <Human> nextDoorNeighbors;
}

class Neighborhood {
Collection <Human> humans;
Neighborhood() {
// Make humans
// Then, let them all know who their neighbors are.
}
}

这很尴尬,因为人类(在这种情况下)一旦设置好(它们实际上是一次性写入),就永远不必更改他们的邻居,但这种设置不能在 Human 构造函数,因为在构造人类时,需要放入 nextDoorNeighbors 集合的邻居并不全部存在

为他人持有某物

假设我希望能够将人类存储在基于树的 map 中。为此,人类必须持有可比较的 ID,即使这对于人类的概念在逻辑上并不重要。人类构建了这个 ID,但从不使用它。只有 map 使用它(甚至应该使用它)。

最佳答案

在第一种情况下,也许这种尴尬表明邻居不应该是人类的属性(property)。也许 Neighborhood 对象应该是 Human 的一个属性,并且可以使用 human.getNeighbours() 这样的方法在需要时获取实际的邻居。那么拥有邻居属性就成为 getNeighbours() 方法的私有(private)性能问题。

在第二种情况下,如果人类本质上是不可结构化的,那么基于树的 map 如何提供​​结构?如果ID与人类无关,那么 map 有什么用呢?通常,ID 是相关的,并且由拥有它的类使用以确保它是唯一可识别的,但如果确实不需要,您可以使用单独的类(例如 HumanKey)来包装 map 的 Human。

关于java - 我怎样才能最好地让一个类(class)为另一个类(class)提供一些东西?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23257842/

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