java设计模式第5弹--责任链模式
2015-09-10 22:06
405 查看
一、责任链模式慨念
责任链模式,有多个对象,每个对象持有对下一个对象的引用,这样就会形成一条链,请求在这条链上传递,直到某一对象决定处理该请求。但是发出者并不清楚到底最终那个对象会处理该请求。
二、解决的问题
责任链模式可以实现,在隐瞒客户端的情况下,对系统进行动态的调整
三、代码模拟实现(部分代码摘自网上)
Abstracthandler类提供了get和set方法,方便MyHandle类设置和修改引用对象,MyHandle类是核心,实例化后生成一系列相互持有的对象,构成一条链。
h1----
h2----
h3----
此处强调一点就是,链接上的请求可以是一条链,可以是一个树,还可以是一个环,模式本身不约束这个,需要我们自己去实现,同时,在一个时刻,命令只允许由一个对象传给另一个对象,而不允许传给多个对象。
责任链模式,有多个对象,每个对象持有对下一个对象的引用,这样就会形成一条链,请求在这条链上传递,直到某一对象决定处理该请求。但是发出者并不清楚到底最终那个对象会处理该请求。
二、解决的问题
责任链模式可以实现,在隐瞒客户端的情况下,对系统进行动态的调整
三、代码模拟实现(部分代码摘自网上)
Abstracthandler类提供了get和set方法,方便MyHandle类设置和修改引用对象,MyHandle类是核心,实例化后生成一系列相互持有的对象,构成一条链。
public interface Handler { public void operator(); } public abstract class AbstractHandler { private Handler handler; public Handler getHandler() { return handler; } public void setHandler(Handler handler) { this.handler = handler; } } public class MyHandler extends AbstractHandler implements Handler{ private String name; public MyHandler(String name){ this.name=name; } @Override public void operator() { System.out.println(name+"----"); if(getHandler() !=null) getHandler().operator(); } } public class Test { /** * @param args */ public static void main(String[] args) { MyHandler handler1 = new MyHandler("h1"); MyHandler handler2 = new MyHandler("h2"); MyHandler handler3 = new MyHandler("h3"); handler1.setHandler(handler2); handler2.setHandler(handler3); handler1.operator(); } }输入如下:
h1----
h2----
h3----
此处强调一点就是,链接上的请求可以是一条链,可以是一个树,还可以是一个环,模式本身不约束这个,需要我们自己去实现,同时,在一个时刻,命令只允许由一个对象传给另一个对象,而不允许传给多个对象。
相关文章推荐
- 10、java5线程池之返回结果的任务之Callable与Future
- Hadoop序列化与Java序列化
- java中字符串常量,堆栈的区别和字符串函数intern(),String s=new String(“abc”)中abc在内存的分配
- 伪静态(Java)
- java中IO流的解释意义 以及装饰者模式的链接
- java.lang.NoClassDefFoundError
- Java 多线程中的任务分解机制-ForkJoinPool详解
- java中,为什么char类型数组可以直接用数组名打印,而int型数组打印结果是地址值!
- Java注释讲解
- java笔记——初识面向对象04继承
- java数组
- java设计模式系列--简单工厂模式
- Java学习之字符串的创建
- netbean的安装及jdk安装和环境变量设置
- android 4.1.2系统 phone 导入eclipse编译
- java虚拟机Class格式与指令
- java中对象的理解
- 解决java.net.SocketException: Too many open files
- Java_jdbc 基础笔记之十二 数据库连接 (beanutils )
- Java编写ArrayBasic制作一个简单的酒店管理系统