Events 责任链与事件

Events 责任链与事件,events,design-patterns,chain-of-responsibility,Events,Design Patterns,Chain Of Responsibility,我总是怀疑何时选择这两种模式中的一种。例如: 假设我有一个输入管理器,当我按下一个按钮时,我希望主要玩家执行跳转动作。在这种情况下,我可以使用两种不同的解决方案: 我有一个输入管理器告诉游戏管理器 附加,游戏经理告诉玩家经理采取行动。所以是 类似于:输入管理器-->游戏管理器-->玩家管理器和 这就是责任链模式 PlayerManager将inputManager上的跳转事件注册到 接收输入,PlayerManager自动执行其 跳转程序 所以我的问题是:为什么我会选择一种模式而不是另一种?两者

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

  • 我有一个输入管理器告诉游戏管理器 附加,游戏经理告诉玩家经理采取行动。所以是 类似于:输入管理器-->游戏管理器-->玩家管理器和 这就是责任链模式
  • PlayerManager将inputManager上的跳转事件注册到 接收输入,PlayerManager自动执行其 跳转程序

  • 所以我的问题是:为什么我会选择一种模式而不是另一种?两者都有各自的优点和缺点,因此在这种情况下,您首选哪种解决方案?

    这里的关键是术语责任

  • GameManager
    负责命令
    playermanger
    执行跳转。这表明逻辑集中在
    GameManager
    中,实现了复杂的编排:似乎
    GameManager
    将指挥许多其他管理者,并且它可以通过执行一些逻辑来做到这一点,同时考虑到所有管理者

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


  • 这里的关键是责任一词:

  • GameManager
    负责命令
    playermanger
    执行跳转。这表明逻辑集中在
    GameManager
    中,实现了复杂的编排:似乎
    GameManager
    将指挥许多其他管理者,并且它可以通过执行一些逻辑来做到这一点,同时考虑到所有管理者

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