设计模式之职责链模式
来源:互联网 发布:淘宝客佣金多少合适 编辑:程序博客网 时间:2024/06/05 01:58
职责链设计模式
*职责链设计模式:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。
* 将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理位置。
职责链设计模式的角色:
请求处理者接口(Handler):定义一个处理请求的接口,可以实现后继链;
请求处理者实现(ConcreteHandler):请求处理接口的实现,如果它可以处理请求,就处理,否则就将该请求转发给它的后继者。
Handler类,定义一个处理请求的接口。
/** * 定义一个处理请求的接口 * @author zzj * */public abstract class Handler {//持有后继的责任对象protected Handler successor;//设置后继的责任对象public void setSuccssor(Handler successor){this.successor = successor;}//处理对象public abstract void HandlerRequest(int request);}
* 具体处理者类
* 处理它所负责的请求,可访问它的后继者,如果可处理该请求,就处理,否则就将该请求转发给它的后继者。
/** * 具体处理者类 * 处理它所负责的请求,可访问它的后继者,如果可处理该请求,就处理,否则就将该请求转发给它的后继者。 * @author zzj * */public class ConcreteHandler1 extends Handler {@Overridepublic void HandlerRequest(int request) {if(request >= 0 && request < 10){System.out.println("ConcreteHandler1处理请求"+request);}else if(successor != null){//转移到下一位successor.HandlerRequest(request);}}}
/** * 具体处理者类 * 处理它所负责的请求,可访问它的后继者,如果可处理该请求,就处理,否则就将该请求转发给它的后继者。 * @author zzj * */public class ConcreteHandler2 extends Handler {@Overridepublic void HandlerRequest(int request) {if(request >= 10 && request < 20){System.out.println("ConcreteHandler2处理请求"+request);}else if(successor != null){successor.HandlerRequest(request);}}}
/** * 具体处理者类 * 处理它所负责的请求,可访问它的后继者,如果可处理该请求,就处理,否则就将该请求转发给它的后继者。 * @author zzj * */public class ConcreteHandler3 extends Handler {@Overridepublic void HandlerRequest(int request) {if(request >= 20 && request < 30){System.out.println("ConcreteHandler3处理请求"+request);}else if(successor != null){successor.HandlerRequest(request);}}}
客户端代码,向链上的具体处理者对象提交请求
public class Test {public static void main(String[] args){//设置职责链Handler handler1 = new ConcreteHandler1();Handler handler2 = new ConcreteHandler2();Handler handler3 = new ConcreteHandler3();handler1.setSuccssor(handler2);handler2.setSuccssor(handler3);int[] requests = {2,8,10,15,20,25,30};for(int request : requests){handler1.HandlerRequest(request);}}}
输出结果:
ConcreteHandler1处理请求2ConcreteHandler1处理请求8ConcreteHandler2处理请求10ConcreteHandler2处理请求15ConcreteHandler3处理请求20ConcreteHandler3处理请求25
阅读全文
0 0
- 设计模式 之 职责链
- 设计模式之职责链
- 设计模式之职责链
- 设计模式之职责链模式
- 设计模式之职责链模式
- C# 设计模式之 职责链模式
- 设计模式之职责链模式
- 大话设计模式之职责链模式
- 设计模式之职责链模式
- 设计模式之职责链模式
- 大话设计模式之职责链模式
- 设计模式之职责链模式
- 设计模式之-----职责链模式
- 设计模式之职责链模式
- 设计模式之职责链模式
- 设计模式之职责链模式
- 设计模式之职责链模式
- C++设计模式之职责链模式
- D的小L (南阳理工oj 题目366)
- 最大公约数、最小公倍数
- 哈喽大家好
- allegro如何打开Gerber文件
- jquery中四种事件监听的区别
- 设计模式之职责链模式
- 基于 Composer 的 PHP 模块化开发--作者:安正超
- 图像卷积与滤波的一些知识点
- thnkphp文件上传操作
- git常用指令及常见错误解决方法
- 208. Implement Trie (Prefix Tree)
- 【业余练手系列】First Unique Character in a String
- HDU 6082 度度熊与邪恶大魔王【dp】
- 关于社会大环境