前言:
责任链模式:责任链模式可以用来对对关卡系统的重构。将关卡数据使用类加以封装
封装的信息根据需求而定:如要出场的敌方角色的设置、通关条件、下一关的记录。
也就是让每一关都是一个对象并加以管理。而关卡系统则是在这群对象中寻找“条件符合”的关卡,让玩家进入挑战。等到关卡完成后,再进入到下一个条件符合的关卡。
原理:主要职责就是当客户提交一个请求时,请求时沿链传递直至有一个ConcreteHandler对象负责处理它。:责任链模式指的是–某个请求需要多个对象进行处理,从而避免请求的发送者和接收之间的耦合关系,将这些对象连成一条链子,并沿着这条链子传递请求,直到有对象处理它为止
某个请求需要多个对象进行处理,从而避免请求的发送者和接收者之间的耦合
责任链模式让一群信息接收者能够一起被串联起来管理,让信息判断上能有一致的操作接口
在生活中,比如说我们的程序猿去工作;第一名程序猿🐒面试的时候 主程觉得他技术能力一般,只值1w ,那么他现场就能拍板,接着来了第二个程序猿🐒来了,主程觉得他很强,可能已经超越了面试官的能力,这个时候主程就没办法决定他的薪资了,他只能报告到公司的领导,然后把这件事情交给领导来决定,从而来决定第二个程序猿🐒的工资到底是多少。是谁完成这件事情不关心,只要能完成这件事情就行,因为所有能完成这件事情的人都是都这条链子之中。
那么从上面大概就能看出 责任链模式能够最大降低 耦合:可以避免代码冗余,提高代码的维护性以及扩展性
大概就是这样的一个流程:
实例化对象 - 设置责任链 - 处理请求
总结:责任链模式是一条链,链上有多个节点,每个节点都有各自的责任。当有输入时,第一个责任节点看自己能否处理该输入,如果可以就处理。如果不能就交由下一个责任节点处理。依次类推,直到最后一个责任节点。
每次都是从链头开始:这也正是链表的缺点。可能引出性能优化的问题
上代码了: