首页 > 代码库 > 设计模式之责任链模式
设计模式之责任链模式
参考:
http://www.cnblogs.com/wxisme/p/4550712.html
责任链模式:将能够处理同一类请求的对象连成一条链所提交的请求沿着链传递,链上的对象逐个判断是否有能力处理该请求,
如果能则处理,如果不能则传递给链上的下一个对象。
优点:将请求者和发送者解耦
简化对象的处理过程
可以通过改变链中的成员或成员的顺序来动态的新增或则删除责任。
缺点:不能保证请求一定会执行,可能或落到责任链之外。
不容易观察运行时的特征,处理请求的方法比较分散。
package com.yun.base.design.chain; public abstract class Handler { //下一级责任链 public Handler handler; //设置下一级责任链 public void setSuccessor(Handler handler){ this.handler=handler; } public abstract void request(int request); }
package com.yun.base.design.chain; public class MyHandler1 extends Handler { @Override public void request(int request) { if(request<10){ System.out.println("我是handler1,我处理了请求:"+request); }else { this.handler.request(request); } } }
package com.yun.base.design.chain; public class MyHandler2 extends Handler { @Override public void request(int request) { if(request>10){ System.out.println("我是handler2,我处理了请求:"+request); }else { System.out.println("请求"+request+"没人能处理"); } } }
测试
package com.yun.base.design.chain; public class ResponsibilityChainTest { public static void main(String[] args) { //创建处理器 Handler handler1=new MyHandler1(); Handler handler2=new MyHandler2(); //客户端创建处理器的关联,形成链 handler1.setSuccessor(handler2); //创建任务,此处为一些数字,不同大小,处理器处理结果不同 int[] requests={4,10,59,2,16}; //调用处理器处理 for(int request:requests){ handler1.request(request); } } }
设计模式之责任链模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。