<设计模式17>责任链模式
2016-09-27 23:32
375 查看
责任链模式(Chain of Responsibility)
责任链模式就如通一个锁链一样,一个节点连着一个节点,每个节点就是一个对象,有着不同的处理逻辑。
使用场景:
多个对象可以处理同一个请求,但具体由哪个处理则在运行时动态决定。
动态的指定一组对象,来按照顺序来链式般的按顺序处理请求。
处理方法的接口IHandler:
抽象处理者AbstractHandler:
提供get set方法,用于实现一个”链式“的结构,使一个请求可以按照这个”链“传递下去。
我们先通过set方法来设置这个责任链。在处理方法中,来获得这个”链“节点,以此处理。这里的handlerRequest是责任链实现的关键,有点递归的思想在其中
结果:
handler1
handler2
上面是责任链模式的基本使用模板,我们在具体使用的时候可以实现不同的AbstractHandler来链式处理请求。
责任链模式就如通一个锁链一样,一个节点连着一个节点,每个节点就是一个对象,有着不同的处理逻辑。
使用场景:
多个对象可以处理同一个请求,但具体由哪个处理则在运行时动态决定。
动态的指定一组对象,来按照顺序来链式般的按顺序处理请求。
处理方法的接口IHandler:
public interface IHandler { void handlerRequest(); }
抽象处理者AbstractHandler:
提供get set方法,用于实现一个”链式“的结构,使一个请求可以按照这个”链“传递下去。
public abstract class AbstractHandler { private IHandler handler; public IHandler getHandler() { return handler; } public void setHandler(IHandler handler) { this.handler = handler; } }具体处理者ConcreteHandler:
我们先通过set方法来设置这个责任链。在处理方法中,来获得这个”链“节点,以此处理。这里的handlerRequest是责任链实现的关键,有点递归的思想在其中
public class ConcreteHandler extends AbstractHandler implements IHandler { String name; public ConcreteHandler(String name) { this.name = name; } @Override public void handlerRequest() { if(getHandler() != null){ System.out.println(name); getHandler().handlerRequest(); } } }使用测试:
public class ChainTest { public static void main(String[] args) { ConcreteHandler handler1 = new ConcreteHandler("handler1"); ConcreteHandler handler2 = new ConcreteHandler("handler2"); ConcreteHandler handler3 = new ConcreteHandler("handler3"); <span style="color:#ff0000;">handler1.setHandler(handler2); handler2.setHandler(handler3);</span> handler1.handlerRequest(); } }
结果:
handler1
handler2
上面是责任链模式的基本使用模板,我们在具体使用的时候可以实现不同的AbstractHandler来链式处理请求。
相关文章推荐
- <<.NET B/S 架构实践>> 几种概念区别 - 算法、设计模式、企业应用架构模式、架构模式
- <译>C#使用设计模式和软件设计原则构建应用程序 PartIII
- <Head First 设计模式>:模板方法模式:Beverage
- <Java设计模式>—工厂方法模式
- <JAVA学习笔记二>——设计模式之装饰者设计模式
- <设计模式>之<单一职责原则>
- <<博客园精华集>>设计模式分册
- <Head First 设计模式>:状态模式:GumballMachine
- <Head First 设计模式>:代理模式:proxy
- <<Android源码设计模式解析与实战>>读书笔记----- Android NDK开发学习
- <译>C#使用设计模式和软件设计原则构建应用程序 PartI
- <Head First 设计模式>:适配器模式:Adapter
- <Head First 设计模式>:策略模式--Duck
- <Java设计模式>—简单工厂模式
- <<cocoa设计模式>>
- <译>C#使用设计模式和软件设计原则构建应用程序 PartII
- <Head First 设计模式>:工厂模式2:抽象工厂模式--Pizza
- <Head First 设计模式>:命令模式:Command
- JAVA设计模式(17) —<行为型>责任链模式(Chain of Responsibility)
- <<设计模式-可复用面向对象软件的基础>>读书笔记