提醒:当前所讲的所有的设计模式都是基本的一种设计思维,到了真正所使用的时候其设计代码肯定和我们之前设计的完全不同所以请读者不要形成硬式思维!
责任链模式:
定义:为请求创建一个接收此次请求对象的链
类型:行为型
适用场景:
一个请求的处理需要多个对象当中的一个或几个协作处理
优点:
请求的发送者和接收者(请求的处理)解耦
责任链可以动态组合
缺点:
责任链太长或者处理时间太长,影响性能
责任链有可能过多
相关设计模式:
责任链模式和状态模式
Coding:
创建Course类
创建抽象类Approver(在很多地方也取名为handler)
创建ArticleApprover类继承Approver抽象类,里面的approver对象是来自于父类Approver中的
创建VideoApprover类其结构和上面的ArticleApprover类似
当前的UML类图
创建Test
运行结果:
重点流程分析:这里你一定得注意一个东西:videoApprover是保存在articleApprover对象里面的approver当中的。所以在进入
所以在进入第一层判断是否含有手记,然后在进入第二层判断是否含有approver(也就是VideoApprover),如果在VideoApprover又调用一个,这样下次就形成了环环相扣那种,链条式处理
JDK中的应用
类filter
将请求组织起来以链条的形式进行处理,也就是相当于责任链模式
我们可以看到的其他子类的具体实现,下面这个就非常明显了,责任链式处理