1、责任链模式:
是一种行为设计模式,允许你将请求沿着处理者链进行发送。收到请求后,每个处理者均可对请求进行处理,或将其传递给链上的下个处理者。
真实世界例子:
在线订购系统中,对于客户发起请求进行的–>身份认证–>订购数据验证–>重复下单验证–>结算–>订购成功等流成作为责任连,让请求在链上移动。
个人理解:
== 像工作中的命令处理流程:命令下发–>数据处理层–>逻辑处理层–>驱动处理层–>硬件处理层,在各层中都有自己的校验,自己处理完则把消息传给下一级,自己校验失败则返回==。
2、责任链模式结构:
责任链会将特定行为转换为被称作处理者的独立对象。在上述示例中,每个检查步骤都可被抽取为仅有单个方法的类,并执行检查操作。请求及其数据则会被作为参数传递给该方法。
模式建议你将这些处理者连成一条链。链上的每个处理者都有一个成员变量来保存对于下一处理者的引用。除了处理请求外,处理者还负责沿着链传递请求。请求会在链上移动,直至所有处理者都有机会对其进行处理。
3、各处理者间的访问方式:
3.1、较差的访问形式:上层持有下层的引用:
1)上帝类依次从下层到上层构造各层级,将下层的引用作为上层的构造函数参数,从而使上层可以访问下层。
2)最顶层构造时,依次将下层作为成员变量构造保存,从而使上层可以访问下层。
3.2、较好的访问形式:访问下层时即拿即用:
1)各层有统一的处理层管理仓库,由各层管理仓库统一负责构造。上层通过在下层管理仓库中query下层特定类指针进行访问。上层不保存下层的引用,解耦。各层可进行独立替换,符合开闭原则。
4、适合的应用场景:
当必须按顺序执行多个处理者时, 可以使用该模式。
学习资料:
1、设计模式:行为模式->责任链模式