2023-02-22
原文作者:键盘林 原文地址:https://blog.csdn.net/qq_37909508/category_8976362.html

提醒:当前所讲的所有的设计模式都是基本的一种设计思维,到了真正所使用的时候其设计代码肯定和我们之前设计的完全不同所以请读者不要形成硬式思维!

责任链模式:

定义:为请求创建一个接收此次请求对象的链

类型:行为型

适用场景:

一个请求的处理需要多个对象当中的一个或几个协作处理

优点:

请求的发送者和接收者(请求的处理)解耦

责任链可以动态组合

缺点:

责任链太长或者处理时间太长,影响性能

责任链有可能过多

相关设计模式:

责任链模式和状态模式

Coding:

创建Course类

202302222110429301.png

创建抽象类Approver(在很多地方也取名为handler)

202302222110441102.png

创建ArticleApprover类继承Approver抽象类,里面的approver对象是来自于父类Approver中的

202302222110452383.png

202302222110464964.png

创建VideoApprover类其结构和上面的ArticleApprover类似

202302222110479685.png

当前的UML类图

202302222110495166.png

创建Test

202302222110507177.png

运行结果:

202302222110528298.png

重点流程分析:这里你一定得注意一个东西:videoApprover是保存在articleApprover对象里面的approver当中的。所以在进入

202302222110541829.png

所以在进入第一层判断是否含有手记,然后在进入第二层判断是否含有approver(也就是VideoApprover),如果在VideoApprover又调用一个,这样下次就形成了环环相扣那种,链条式处理

2023022221105600110.png

JDK中的应用

类filter

2023022221105741611.png

2023022221105966312.png

将请求组织起来以链条的形式进行处理,也就是相当于责任链模式

2023022221110158713.png

我们可以看到的其他子类的具体实现,下面这个就非常明显了,责任链式处理

2023022221110312714.png

阅读全文