设计模式--责任链模式
2016-04-08 00:00
387 查看
摘要: 简单记录责任链模式的使用。
责任链模式(chain of responsibility):
注意点:
示例:
责任链模式测试类 ChainOfResponsibilityTest.java
处理者接口类Handler.java
抽象处理者类AbstractHandler.java
处理者实现类HandlerImpl.java
责任链模式(chain of responsibility):
有多个对象,每个对象持有对下一个对象的引用,这样就会形成一条链,请求在这条链上传递,直到某一对象决定处理该请求。但是发出者并不清楚到底最终那个对象会处理该请求,所以,责任链模式可以实现,在隐瞒客户端的情况下,对系统进行动态的调整。
注意点:
链接上的请求可以是一条链,可以是一个树,还可以是一个环,模式本身不约束这个,需要我们自己去实现,同时,在一个时刻,命令只允许由一个对象传给另一个对象,而不允许传给多个对象。
示例:
责任链模式测试类 ChainOfResponsibilityTest.java
/** * 责任链模式测试类 * * @author Kevin * @date 2016-3-15 */ public class ChainOfResponsibilityTest { public static void main(String[] args) { HandlerImpl ceoHandler = new HandlerImpl("CEO"); HandlerImpl ctoHandler = new HandlerImpl("CTO"); HandlerImpl pmHandler = new HandlerImpl("PM"); HandlerImpl coderHandler = new HandlerImpl("coder"); ceoHandler.setHandler(ctoHandler); ctoHandler.setHandler(pmHandler); pmHandler.setHandler(coderHandler); ceoHandler.handleRequest(); } }
处理者接口类Handler.java
/** * 处理者接口 * * @author Kevin * @date 2016-3-15 */ public interface Handler { /** * 处理请求 * * @author Kevin */ void handleRequest(); }
抽象处理者类AbstractHandler.java
/** * 抽象处理者类 * * @author Kevin * @date 2016-3-15 */ public abstract class AbstractHandler { /* 处理者 */ private Handler handler; public Handler getHandler() { return handler; } public void setHandler(Handler handler) { this.handler = handler; } }
处理者实现类HandlerImpl.java
/** * 处理者实现类 * * @author Kevin * @date 2016-3-15 */ public class HandlerImpl extends AbstractHandler implements Handler { /* 名称 */ private String name; public HandlerImpl(String name) { this.name = name; } @Override public void handleRequest() { System.out.println(name + " deal!"); Handler handler = getHandler(); if (null != handler) { handler.handleRequest(); } } }
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序