设计模式之责任链模式
2012-11-27 15:45
232 查看
责任链模式的核心思想是让请求对象(Request)沿着链(chain)按照一定顺序(ordered)依次传递下去,链上的每个处理器(Filter)都有机会去处理请求(request)。 客户端只需把请求传递给链(chain)上的第一个处理器(filter)即可,至于被谁处理,客户端不care。
运行结果:
before MyFilter1...
before MyFilter2...
before MyFilter3...
after MyFilter3...
after MyFilter2...
after MyFilter1...
/** * Test.java * * @author zhanghui * */ public class Test { public static void main(String[] args) { FilterManager.service(new Request(), new Response()); } } class Request { } class Response { } class FilterManager { private static Filter firstFilter = null; static { // 可以把所有的filter放到配置文件中,然后这里从配置文件中初始化所有filter Filter f1 = new MyFilter1(); Filter f2 = new MyFilter2(); Filter f3 = new MyFilter3(); f1.setNextFilter(f2); f2.setNextFilter(f3); f3.setNextFilter(new NullFilter()); firstFilter = f1; } public static void service(Request req, Response resp) { if (firstFilter != null) { firstFilter.process(req, resp); } } } interface Filter { void setNextFilter(Filter filter); void process(Request req, Response resp); } abstract class AbstractFilter implements Filter { protected Filter next; public void setNextFilter(Filter next) { this.next = next; } } class MyFilter1 extends AbstractFilter { public void process(Request req, Response resp) { System.out.println("before MyFilter1..."); next.process(req, resp); System.out.println("after MyFilter1..."); } } class MyFilter2 extends AbstractFilter { public void process(Request req, Response resp) { System.out.println("before MyFilter2..."); next.process(req, resp); System.out.println("after MyFilter2..."); } } class MyFilter3 extends AbstractFilter { public void process(Request req, Response resp) { System.out.println("before MyFilter3..."); next.process(req, resp); System.out.println("after MyFilter3..."); } } class NullFilter extends AbstractFilter { public void process(Request req, Response resp) { // do nothing } }
运行结果:
before MyFilter1...
before MyFilter2...
before MyFilter3...
after MyFilter3...
after MyFilter2...
after MyFilter1...
相关文章推荐
- 设计模式之责任链模式
- JAVA系列-设计模式-责任链模式
- java设计模式之责任链模式
- 设计模式之责任链模式17
- Java设计模式之责任链模式、职责链模式
- 设计模式初探-责任链模式
- 设计模式之责任链模式
- 设计模式之-责任链模式(Chain of Responsibility)
- 设计模式之责任链模式
- 设计模式之(责任链模式)
- 23种设计模式C++实例之责任链模式
- 乐在其中设计模式(C#) - 责任链模式(Chain of Responsibility Pattern)
- 【JS设计模式】责任链模式的代码示例
- Java设计模式编程中的责任链模式使用示例
- Java进阶篇设计模式之八 ----- 责任链模式和命令模式
- 设计模式初探-责任链模式
- 设计模式 --责任链模式 Chain of resposbility
- JAVA设计模式——责任链模式
- 详解java设计模式之责任链模式
- Java设计模式之责任链模式