行为型设计模式之责任链模式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了行为型设计模式之责任链模式相关的知识,希望对你有一定的参考价值。
参考技术A 为请求创建一个接受此次请求对象的链行为型
为请求创建一个接受此次请求对象的链
J2EE中Servlet的Filter过滤器就是采用这用责任链模式,一个过滤器过滤完可以继续交给下一个过滤器继续别的过滤逻辑。最终交给Servlet处理。
设想这样一个场景,你的一个采购合同需要审批,根据金额大小,从主管、副董事长、董事长、董事会每一层级有不同的审批权限,对应审批金额(当然还可以有中间其他的层级经理、副经理等等),50万主任审批就OK了,100万需要更高级的责任人审批。
设计模式之责任链模式
1、责任链模式 chainOfResponsiblity :
a、责任链模式属于行为型模式,行为型模式关注系统中对象之间的相互交互,研究系统在运行时对象之间的相互通信和协作,进一步明确对象的职责,共有11中模式。
b、责任链模式的定义:
将能够处理同一类请求的对象连成一条链,所提交的请求沿着链传递,链上的对象逐个判断是否有能力处理该请求,如果能则处理,如果不能则传递给链上的下一个对象。
c、增加新的处理对象:
由于责任链的创建完全在客户端中,因此新增新的具体处理者对原有类库没有任何影响,只需要添加新的类,然后在客户端中调用时添加即可,符合开闭原则。
2、简单的代码演示:
a、下面五张图中,可以看到,Leader 抽象类中有一个 proctected 范围的 nextLeader 成员变量,并且提供一个 set 方法。 Director 类、Manager 类、GeneralManger 类都继承该抽象类。
2、看看 Client13 测试类中输出的结果,以及示例代码类的主要类图关系。
3、责任链模式的常见的开发场景:
- Java 中,异常机制就是一种责任链模式。一个 try 可以对应多个 catch, 当第一个 catch 不匹配类型时,则自动跳到第二个 catch 中。
- Javascript 语言中,事件的冒泡和捕获机制。Java 语言中,事件的处理采用观察者模式。
- Servlet 开发中,过滤器的链式处理。
- Struts2 中,拦截器的调用也是典型的责任链模式
本文出自 “12392717” 博客,请务必保留此出处http://12402717.blog.51cto.com/12392717/1929225
以上是关于行为型设计模式之责任链模式的主要内容,如果未能解决你的问题,请参考以下文章