两个对象彼此了解

时间:2013-12-15 12:20:43

标签: oop language-agnostic

我有以下问题:我正在设计游戏并总结让我们说我有三个类:

  • 播放器
  • 动力
  • 单元

一些“用例”

  • 玩家必须知道他拥有多少单位和动力装置。如果达到了限制,则不应构建更多的单位/动力装置(即玩家必须参考属于他的每个元素)。
  • 单位从玩家请求能量,玩家从PowerPlants获取能量并将其发送到单位
  • 玩家必须知道单位或PowerPlant何时被销毁(即单位和PowerPlants必须能够通知玩家他们已被销毁)

我能让这个工作的唯一方法是,玩家知道PowerPlants和Units,但每个PowerPlant和Unit都知道他的玩家/所有者,以便他们可以双向沟通。

我不知何故认为这是一种代码味道......当我遇到类似的情况时,我总是遇到麻烦。

提前致谢。

1 个答案:

答案 0 :(得分:5)

我在多个场合遇到过这个问题,而你所说的并不一定是反模式,但确实增加了不必要的复杂性。

YMMV,但在我的情况下,我并不是真的想在这些不同的班级之间建立直接的关系,而是在事情发生时通知对方的方式,所以我找到的更清洁的方式是有一个活动经理(或者任何其他类型的回调机制)将所有逻辑部分粘合在一起。有了这个工具,我发现我可以摆脱所有那些简化了层次结构的双重引用。