java 行为模式 责任链模式
来源:互联网 发布:java教程电子书下载 编辑:程序博客网 时间:2024/05/22 00:19
责任链模式
意图:
使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止
适用性:
有多个的对象可以处理一个请求,哪个对象处理该请求运行时刻自动确定。 你想在不明确指定接收者的情况下,向多个对象中的一个提交一个请求。可处理一个请求的对象集合应被动态指定。
责任链模式的构成
1 传递者接口(Handler):定义一个处理请求的接口,实现链中下一个对象(可选)
2 具体传递者(ConcreteHandler):可以访问链中下一个对象,如果可以处理请求,就处理它,否则将请求转发给后继者
3 客户端(Client):向链中的对象发出请求
UML
责任链模式的要点主要是:
1、有多个对象共同对一个任务进行处理。
2、这些对象使用链式存储结构,形成一个链,每个对象知道自己的下一个对象。
3、一个对象对任务进行处理,可以添加一些操作后将对象传递个下一个任务。也可以在此对象上结束任务的处理,并结束任务。
3、客户端负责组装链式结构,但是客户端不需要关心最终是谁来处理了任务。
public abstract class Handler { //下一级责任链 public Handler handler; //设置下一级责任链 public void setSuccessor(Handler handler){ this.handler=handler; } public abstract void request(int request);}public class ConcreteHandler1 extends Handler { @Override public void request(int request) { if(request<10){ System.out.println("我是handler1,我处理了请求:"+request); }else { this.handler.request(request); } }}public class ConcreteHandler2 extends Handler { @Override public void request(int request) { if(request>10){ System.out.println("我是handler2,我处理了请求:"+request); }else { System.out.println("请求"+request+"没人能处理"); } }}public class Client { public static void main(String[] args) { //创建处理器 Handler handler1=new ConcreteHandler1(); Handler handler2=new ConcreteHandler2(); //客户端创建处理器的关联,形成链 handler1.setSuccessor(handler2); //创建任务,此处为一些数字,不同大小,处理器处理结果不同 int[] requests={4,10,59,2,16}; //调用处理器处理 for(int request:requests){ handler1.request(request); } }}我是handler1,我处理了请求:4请求10没人能处理我是handler2,我处理了请求:59我是handler1,我处理了请求:2我是handler2,我处理了请求:16http://www.cnblogs.com/java-my-life/archive/2012/05/28/2516865.html
阅读全文
0 0
- java 行为模式 责任链模式
- 责任链模式 - 行为模式
- java 设计模式-行为模式之责任链模式
- 《JAVA与模式》之责任链模式(行为)
- Java设计模式(行为型)之-责任链模式
- Java设计模式(17)行为型:责任链模式
- 谈谈java中的行为型模式:责任链模式
- Java设计模式_(行为型)_责任链模式
- java行为型设计模式——责任链模式
- 责任链模式(行为类)
- 责任链模式(行为型)
- 设计模式--行为型--责任链模式
- 行为型模式----责任链模式
- 行为模式之责任链模式
- 行为型模式-责任链模式
- 行为型模式--责任链模式
- 行为型设计模式-责任链模式
- 行为型设计模式-责任链模式
- CentOS 7
- hosts in ipv6 (自/不定期更新)
- Maven私有服务器Nexus的详细介绍以及安装
- mybatis--概述
- JDK与JRE及其在Eclipse中的使用
- java 行为模式 责任链模式
- struct,class的sizeof大小问题
- DebuggerStepThrough 属性
- 多种CSS3动画效果星级评分特效
- Android面试篇之IPC机制[进程之间的通讯]
- 序列化二叉树的一种方法是使用预序遍历。当我们遇到一个非空节点时,我们记录节点的值 如果它是一个空节点,我们使用一个哨兵值如#记录。
- 40. Combination Sum II
- 遍历 HashMap
- 4.3(2)