Oop 两个物体互相认识
我有以下问题:我正在设计一个游戏,总结一下,假设我有三门课:Oop 两个物体互相认识,oop,language-agnostic,Oop,Language Agnostic,我有以下问题:我正在设计一个游戏,总结一下,假设我有三门课: 玩家 动力装置 单位 一些“用例” 玩家必须知道他有多少单位和动力装置。如果已达到限制,则不应建造更多的装置/动力装置(即,玩家必须拥有属于他的每个元素的参考) 单位向玩家请求能量,玩家从发电厂获取能量并将其发送给单位 玩家必须知道一个单位或动力装置何时被摧毁(即,单位和动力装置必须能够通知玩家它们已经被摧毁) 我唯一能让它工作的方法是,玩家知道动力装置和单位,但每个动力装置和单位都知道他的玩家/所有者,所以他们可以用两种方式
- 玩家
- 动力装置
- 单位
- 玩家必须知道他有多少单位和动力装置。如果已达到限制,则不应建造更多的装置/动力装置(即,玩家必须拥有属于他的每个元素的参考)
- 单位向玩家请求能量,玩家从发电厂获取能量并将其发送给单位
- 玩家必须知道一个单位或动力装置何时被摧毁(即,单位和动力装置必须能够通知玩家它们已经被摧毁)
提前谢谢。我已经在多个场合遇到过这个问题,你所说的不一定是反模式的,但它确实增加了不必要的复杂性
YMMV,但在我的例子中,我真的不想在这些不同的类之间建立直接的关系,而是想在发生事情时通知彼此,所以我找到的更干净的方法是使用事件管理器(或任何其他类型的回调机制)将所有逻辑部分粘合在一起。有了这个工具,我可以摆脱那些双重参照,这大大简化了层次结构 为了最小化耦合,我会让一个动力装置保持一个弱引用到一个可通知的(所以播放器是可通知的);然后,动力装置可以通知玩家自己等。我认为不严格要求单独的事件管理器。