我有以下问题:我正在设计一个游戏并总结一下,假设我有三个类:

  • 播放器
  • PowerPlant
  • 单位

  • 一些“用例”
  • 玩家必须知道他有多少单位和动力装置。如果已达到限制,则不应构造更多的单位/动力装置(即,玩家必须获得属于他的每个元素的引用)
  • 单位从播放器请求能量,然后播放器从PowerPlants获取能量并将其发送到单元
  • 玩家必须知道什么时候单位或PowerPlant被销毁(即单位和PowerPlants必须能够通知玩家他们已经被销毁)。

    我唯一能使它起作用的方法是,玩家了解PowerPlants和Unit,但每个PowerPlant和Unit也了解其Player/Owner,以便他们可以通过两种方式进行通信。

    我以某种方式认为这是一种代码味道...当我处于类似情况时,从长远来看,我总是遇到麻烦。

    提前致谢。

    最佳答案

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

    YMMV,但就我而言,我并不是真正希望在这些不同的类之间建立直接关系,而是希望在发生某些事情时互相通知,因此我发现的更简洁的方法是使用事件管理器(或其他任何一种回调机制)将所有逻辑部分粘合在一起。有了这个工具,事实证明我可以摆脱所有重复引用,从而大大简化了层次结构。

  • 09-25 21:22