Events 责任链与事件
我总是怀疑何时选择这两种模式中的一种。例如: 假设我有一个输入管理器,当我按下一个按钮时,我希望主要玩家执行跳转动作。在这种情况下,我可以使用两种不同的解决方案:Events 责任链与事件,events,design-patterns,chain-of-responsibility,Events,Design Patterns,Chain Of Responsibility,我总是怀疑何时选择这两种模式中的一种。例如: 假设我有一个输入管理器,当我按下一个按钮时,我希望主要玩家执行跳转动作。在这种情况下,我可以使用两种不同的解决方案: 我有一个输入管理器告诉游戏管理器 附加,游戏经理告诉玩家经理采取行动。所以是 类似于:输入管理器-->游戏管理器-->玩家管理器和 这就是责任链模式 PlayerManager将inputManager上的跳转事件注册到 接收输入,PlayerManager自动执行其 跳转程序 所以我的问题是:为什么我会选择一种模式而不是另一种?两者
所以我的问题是:为什么我会选择一种模式而不是另一种?两者都有各自的优点和缺点,因此在这种情况下,您首选哪种解决方案?这里的关键是术语责任:
GameManager
负责命令playermanger
执行跳转。这表明逻辑集中在GameManager
中,实现了复杂的编排:似乎GameManager
将指挥许多其他管理者,并且它可以通过执行一些逻辑来做到这一点,同时考虑到所有管理者playermanger
根据接收到的事件自行做出决定。在这种方法中,逻辑是分散的:每个利益相关者都将倾听它感兴趣的事件并相应地采取行动。因此,每个人都将对自己的行为负责。GameManager
与之无关,可能与playermanger
一样是重要的涉众:他们很可能不知道另一个存在,也没有隐含的层次结构,每一个都只是孤立地工作这里的关键是责任一词:
GameManager
负责命令playermanger
执行跳转。这表明逻辑集中在GameManager
中,实现了复杂的编排:似乎GameManager
将指挥许多其他管理者,并且它可以通过执行一些逻辑来做到这一点,同时考虑到所有管理者playermanger
根据接收到的事件自行做出决定。在这种方法中,逻辑是分散的:每个利益相关者都将倾听它感兴趣的事件并相应地采取行动。因此,每个人都将对自己的行为负责。GameManager
与之无关,可能与playermanger
一样是重要的涉众:他们很可能不知道另一个存在,也没有隐含的层次结构,每一个都只是孤立地工作