责任链与事件

时间:2015-11-24 14:33:08

标签: events design-patterns chain-of-responsibility

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

  1. 我有一个inputManager告诉GameManager是什么 追加并且gameManager告诉玩家经理采取行动。所以这是 类似的东西:inputManager --->游戏经理--->球员经理和 这是责任链模式。
  2. PlayerManager将inputManager上的跳转事件注册到 接收输入,PlayerManager自动执行它 跳日常。
  3. 所以我的问题是:为什么我会选择一种模式而不是另一种?两者都有他们的优点和缺点,所以当你遇到这种情况时,哪个是你的首选解决方案?

1 个答案:

答案 0 :(得分:4)

这里的关键是术语责任

  1. GameManager有责任命令PlayerManager执行跳转。这表明逻辑集中在GameManager中,从而实现了复杂的编排:GameManager似乎可以命令许多其他管理器,并且它可以通过执行一些逻辑来完成所有这些操作。考虑到了。

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