设计模式之职责链模式
2017-08-06 16:34
183 查看
职责链设计模式
*职责链设计模式:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。* 将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理位置。
职责链设计模式的角色:
请求处理者接口(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 { @Override public 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 { @Override public 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 { @Override public 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 Concrete 4000 Handler1(); 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处理请求2 ConcreteHandler1处理请求8 ConcreteHandler2处理请求10 ConcreteHandler2处理请求15 ConcreteHandler3处理请求20 ConcreteHandler3处理请求25
相关文章推荐
- 设计模式之职责链(Chain Of Responsibility)
- 设计模式六大原则----------单一职责原则
- 设计模式之职责链模式
- 设计模式六大原则(1):单一职责原则
- 设计模式之单一职责原则
- 设计模式学习之路——Chain Of Responsibility 职责链模式
- 云计算设计模式(六)——命令和查询职责分离(CQRS)模式
- JAVA设计模式之【职责链模式】
- 设计模式之单一职责原则
- 设计模式之职责链 C++
- 设计模式六大原则(1):单一职责原则
- 设计模式:职责链模式(Chain Of Responsibility)
- javascript 设计模式-职责链模式
- 设计模式--对职责链模式的思考
- 【设计模式】单一职责 开-闭 依赖倒转 里氏替换原则
- 设计模式 - 状态模式、职责连模式
- 项目设计之---------- 职责链模式应用
- 设计模式与泡mm的关系之Chain of Responsibility职责链模式及再思考
- 设计模式六大原则(1):单一职责原则
- [设计模式原则]单一职责原则(Single Responsibility Principle,SRP)