我总是怀疑何时选择这两种模式中的一种。例如: 假设我有一个输入管理器,当我按下一个按钮时,我希望主播放器执行跳转动作。在这种情况下,我可以使用两种不同的解决方案:
所以我的问题是:为什么我会选择一种模式而不是另一种?两者都有他们的优点和缺点,所以当你遇到这种情况时,哪个是你的首选解决方案?
答案 0 :(得分:4)
这里的关键是术语责任:
GameManager
有责任命令PlayerManager
执行跳转。这表明逻辑集中在GameManager
中,从而实现了复杂的编排:GameManager
似乎可以命令许多其他管理器,并且它可以通过执行一些逻辑来完成所有这些操作。考虑到了。
PlayerManager
根据收到的事件自行做出决定。在这种方法中,逻辑是分散的:每个利益相关者将倾听它感兴趣的事件并采取相应的行动。因此,每个人都将对其行为负责。 GameManager
没有参与其中,可能与PlayerManager
一样重要的利益相关者:他们很可能不会知道另一个存在而且没有隐含的层次结构,每个人只是孤立地工作。