职责链模式 chain of responsibility 意图 使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系.将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止. 动机 给多个对象处理一个请求的机会,从而解耦发送者和请求者. 从第一个对象开始,链中收到请求的对象要么亲自处理它,要么转发给链中的下一个候选者.提交请求的对象并不明确地知道哪一个对象将会处理它,可以当做是一个隐式接受者. 沿着链发送请求,并保证接受者为隐式的,每个链上的对象都有一致的处理…
参考:http://www.cnblogs.com/zhili/p/ChainOfResponsibity.html 一.引言 在现实生活中,有很多请求并不是一个人说了就算的,例如面试时的工资,低于1万的薪水可能技术经理就可以决定了,但是1万~1万5的薪水可能技术经理就没这个权利批准,可能就需要请求技术总监的批准,所以在面试的完后,经常会有面试官说,你这个薪水我这边觉得你这技术可以拿这个薪水的,但是还需要技术总监的批准等的话.这个例子也就诠释了本文要介绍的内容.生活中的这个例子真是应用了责任链模…
前言 已经把五个创建型设计模式和七个结构型设计模式介绍完了,从这篇开始要介绍行为型设计模式了,第一个要介绍的行为型设计模式就是责任链模式(又称职责链模式). 责任链模式 概念介绍 责任链模式是为了避免请求的发送者和接收者之间的耦合关系,使多个接收对象都有机会处理请求.将这些对象练成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止.当然责任链中也有可能没有可以处理该请求的对象,这种情况是允许发生的. 举例 还是以前的规律,先举出具体的代码例子,然后再分析.拿前阵子在我老东家发生的一件事情来…
责任链模式,顾名思义,就是一条链.这个链到底是怎么运行的呢?它主要是将能够处理同一类请求的对象连成一条链,所提交的请求沿着链传递,链上的对象逐个判断是否有能力处理该请求,如果能则处理,如果不能则传递给链上的下一个对象进行处理,以此类推.  比如说公司请假需要审批,举个不恰当的例子,如果请假小于3天,主管审批:3-10天的,经理审批:10-30天的,总经理审批:超过30天的,不批准等等.这就得一步步去判断,如果撇开设计模式不看的话,那么我们可以使用if…else…把它解决了,但是问题可想而知,实际…
一.目标 增加filterchain功能 二.代码 1.Filter.java public interface Filter { public String doFilter(String str); } 2.FilterChain.java import java.util.ArrayList; import java.util.List; public class FilterChain implements Filter { private List<Filter> filters =…
一.目标 1.用Filter模拟处理Request.Response 2.思路细节技巧: (1)Filter的doFilter方法改为doFilter(Request,Resopnse,FilterChain),有FilterChain引用,为利用FilterChain调用下一个Filter做准备 (2)FilterChain继承Filter,这样,FilterChain既是FilterChain又是Filter,那么FilterChain就可以调用Filter的方法doFilter(Reque…
一.目标 数据提交前做各种处理 二.代码 1.MsgProcessor.java public class MsgProcessor { private List<Filter> filters = new ArrayList<Filter>(); private String msg; public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } public S…
在阎宏博士的<JAVA与模式>一书中开头是这样描述责任链(Chain of Responsibility)模式的: 责任链模式是一种对象的行为模式.在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链.请求在这个链上传递,直到链上的某一个对象决定处理此请求.发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任. 从击鼓传花谈起 击鼓传花是一种热闹而又紧张的饮酒游戏.在酒宴上宾客依次坐定位置,由一人击鼓,击鼓…
在阎宏博士的<JAVA与模式>一书中开头是这样描述责任链(Chain of Responsibility)模式的: 责任链模式是一种对象的行为模式.在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链.请求在这个链上传递,直到链上的某一个对象决定处理此请求.发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任. 在以下条件下可考虑使用Chain of Responsibility:1 有多个的对象可以处理一…
责任链模式-Chain of Responsibility 在这种模式中,通常每个接收者都包含对另一个接收者的引用.如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推. 咱们在这里换一个场景: 国王(King类), 经常会遇到各种麻烦(Trouble类), 而国王一旦遇到麻烦, 则会把麻烦交给手下去做. 国王有一天上了战场, 任务法派的顺序是这样的, 骑兵先上, 骑兵不行步兵上, 步兵不行就换贴身侍卫上. TroubleType枚举 在这里枚举了, 国王在战场上有三种事情…