设计模式之---责任链模式

来源:互联网 发布:gif图编辑软件 编辑:程序博客网 时间:2024/04/30 11:25
什么是链
1、链是一系列节点的集合。

2.、链的各节点可灵活拆分再重组。

职责链模式
使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系,
将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理他为止。

其实刚开始我觉得这个模式和装饰者模式有点像,但两个模式的应用场景是不一样的。装饰者模式是适用于动态添加功能的,而责任链模式则是倾向于处理一个流程操作,把每个操作单独封装,形成一条工作链

package chain;public abstract class Handler {/**      * 持有后继的责任对象      */      protected Handler handler;    /**      * 示意处理请求的方法,虽然这个示意方法是没有传入参数的      * 但实际是可以传入参数的,根据具体需要来选择是否传递参数      */      public abstract void doRequest();    /**      * 赋值方法,设置后继的责任对象      */      public void setSuccessor(Handler handler) {        this.handler = handler;    }}
package chain;public class Interceptor extends Handler {@Overridepublic void doRequest() {// TODO Auto-generated method stubif(null!=handler) {System.out.println("拦截请求");handler.doRequest();}System.out.println("收尾操作");}}
package chain;public class TransCoding extends Handler {@Overridepublic void doRequest() {// TODO Auto-generated method stubif(null!=handler) {handler.doRequest();}System.out.println("转码操作");System.out.println("转码成功");}}
package chain;public class Client {public static void main(String[] args) {// TODO Auto-generated method stubHandler interceptor=new Interceptor();Handler transCodingHandler=new TransCoding();interceptor.setSuccessor(transCodingHandler);interceptor.doRequest();}}


1 0
原创粉丝点击