java设计模式-责任链模式
来源:互联网 发布:软件做成启动项 编辑:程序博客网 时间:2024/06/12 01:07
什么是责任链模式:
将请求同一类资源的请求对象练成一条链,所提交的请求到某一个链节,如果该链节能处理则不必要往下传,不然则继续传到下一个对象链接去处理。
开发中常见的场景:
1.springmvc的拦截器
2.java中,异常处理机制,抛出异常
3.javascript的事件冒泡机制
责任链例子:
这里的场景是实现一个拦截器demo,所限当然是定义我们的拦截器,然后,使用时,就继承它
/** * 定义一个拦截器 * @author liuxg * @date 2016年5月27日 下午6:01:27 */public abstract class Interceptor { protected Interceptor nextChain ; public void setNextChain(Interceptor nextChain) { this.nextChain = nextChain; } public abstract void beginIntecept(String condition);}class Interceptor1 extends Interceptor{ @Override public void beginIntecept(String condition) { if ("interceptor1".equals(condition)) { System.out.println("拦截器到interceptor1"); }else{ System.out.println("interceptor1无法处理,到下一个拦截器"); nextChain.beginIntecept(condition); } }}class Interceptor2 extends Interceptor{ @Override public void beginIntecept(String condition) { if ("interceptor2".equals(condition)) { System.out.println("拦截器到interceptor2"); }else{ System.out.println("interceptor2无法处理,到下一个拦截器"); nextChain.beginIntecept(condition); } }}class Interceptor3 extends Interceptor{ @Override public void beginIntecept(String condition) { if ("interceptor3".equals(condition)) { System.out.println("拦截器到interceptor3"); }else{ System.out.println("interceptor3无法处理,到下一个拦截器"); nextChain.beginIntecept(condition); } }}
客户端可以传递一个条件字符串,所有跟其中一个拦截器匹配,则该拦截器处理,如果不行,则传递到下一个拦截器处理
public class Client { public static void main(String[] args) { Interceptor interceptor1 = new Interceptor1(); Interceptor interceptor2 = new Interceptor2(); Interceptor interceptor3 = new Interceptor3(); interceptor1.setNextChain(interceptor2); interceptor2.setNextChain(interceptor3); interceptor1.beginIntecept("interceptor3");//处理条件 }}
0 0
- java设计模式---责任链设计模式
- Java责任链设计模式
- Java设计模式-责任链
- java设计模式-责任链
- java-设计模式-责任链
- java设计模式-责任链
- java设计模式之责任链模式
- JAVA系列-设计模式-责任链模式
- 责任链模式(JAVA设计模式)
- java设计模式之责任链模式
- Java设计模式-11-责任链模式
- Java 设计模式之责任链模式
- Java设计模式之责任链模式
- java 设计模式 -- 责任链模式
- 《Java设计模式》之责任链模式
- 《Java设计模式 》之责任链模式
- JAVA设计模式之:责任链模式
- 设计模式-责任链模式(Java)
- 排序算法之快排
- 搜索框设置填充
- NUOJ 1242 Interference Signal (信号强度) (第八届河南省程序设计)
- bitbucket的ssh公钥指纹
- 使用ViewFlipper实现屏幕切换动画效果
- java设计模式-责任链模式
- 基于hadoop与spark的大数据分析实战——第一章 Hadoop部署与实践
- ubuntu安装qt 5.6 及 example “Musicplayer” 不能够编译原因
- qiushi百科
- STM32F0xx_USART收发配置详细过程
- 二维数组传递参数
- 求N个数的最小公倍数
- 顺序表应用6:有序顺序表查询
- 递归调用的实例讲解