1

我总是怀疑何时选择这两种模式中的一种。例如:假设我有一个输入管理器,当我按下一个按钮时,我希望主玩家执行跳跃动作。在这种情况下,我可以使用 2 种不同的解决方案:

  1. 我有一个 inputManager 告诉 GameManager 刚刚添加了什么,而 gameManager 告诉 Player-manager 采取行动。所以它类似于: inputManager ---> Game manager ---> Player-manager 这就是责任链模式。
  2. PlayerManager 在 inputManager 上注册跳转事件以接收输入,并且 PlayerManager 自动执行其跳转例程。

所以我的问题是:为什么我会选择一种模式而不是另一种模式?两者各有利弊,那么当您遇到这种情况时,您首选的解决方案是什么?

4

1 回答 1

4

这里的关键是术语责任

  1. GameManager责任指挥PlayerManager执行跳跃。这表明逻辑集中在 中GameManager,从而实现了复杂的编排:似乎GameManager将命令许多其他管理器,并且它可能通过执行一些将所有这些考虑在内的逻辑来做到这一点。

  2. 根据PlayerManager收到的事件自行做出决定。在这种方法中,逻辑是分散的:每个利益相关者都会监听它感兴趣的事件并采取相应的行动。因此,每个人都将对自己的行为负责。没有参与其中GameManager,并且可能与利益相关者一样重要PlayerManager:他们很可能不知道另一个存在并且没有隐含的层次结构,每个人都只是孤立地工作。

于 2015-11-24T15:05:36.943 回答