我在多个项目中反复遇到过这个问题:我最终得到了需要与该结构外部的对象进行通信的对象(嵌套在结构的深处)。
目前我有一个实例化 Hud 和 ObjectsList 类的 Game 类。
Hud 实例化各种抬头显示面板,这些面板本身实例化包含可见文本字段的较小部分。
ObjectsList 实例化各种游戏对象,包括 Player 类。
为了让玩家与特定的 Hud 面板进行通信,我目前需要触发一系列自定义事件,一直到 Game,然后让游戏调用 Hud 上的方法,该方法调用适当的 Hud 面板上的方法。
这似乎相当笨重且效率低下。我可以向 Player 传递对 Hud 的引用,因为可以说 Player 'has-as' Hud。但这是紧耦合吗?而且,鉴于我不希望在其他地方重用此代码,这有关系吗?
我还可以使用观察者模式并注册 Hud 面板来监听来自 Player 的更新,但是,当 Game 无法立即访问 Player 和 hud 面板时,这在哪里进行管理?
还是应该所有的实例化都发生在游戏中,然后结构“组合”?
我很想知道是否有什么我不明白的东西导致这些看似笨重的嵌套结构出现,或者它们是否只是一个必要的副产品。
如果我建议的结构有任何根本性的错误,我会很高兴知道实际的替代方案是什么(最好使用通俗易懂的语言,因为我是一名自学成才的编码员)。
干杯。