- 浏览: 18296 次
- 性别:
- 来自: 西安
最新评论
Chain Of Responsibility Pattern:很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使系统可以在不影响客户端的情况下动态的重新组织链和分配责任。
1).
Handler.java
package com.flyinh.ihandler; public interface Handler { void handleRequest(String str); }
HandlerA.java
package com.flyingh.handler; import com.flyinh.ihandler.Handler; public class HandlerA implements Handler { private Handler successor; public HandlerA(Handler successor) { super(); this.successor = successor; } @Override public void handleRequest(String str) { // TODO Auto-generated method stub if(str.equals("A")){ System.out.println("HandlerA.handleRequest()"); }else{ successor.handleRequest(str); } } }
HandlerB.java
package com.flyingh.handler; import com.flyinh.ihandler.Handler; public class HandlerB implements Handler { private Handler successor; public HandlerB(Handler successor) { super(); this.successor = successor; } @Override public void handleRequest(String str) { // TODO Auto-generated method stub if (str.equals("B")) { System.out.println("HandlerB.handleRequest()"); } else { successor.handleRequest(str); } } }
HandlerC.java
package com.flyingh.handler; import com.flyinh.ihandler.Handler; public class HandlerC implements Handler { private Handler successor; public HandlerC(Handler successor) { super(); this.successor = successor; } @Override public void handleRequest(String str) { // TODO Auto-generated method stub if (str.equals("C")) { System.out.println("HandlerC.handleRequest()"); } else { successor.handleRequest(str); } } }
OtherHandler.java
package com.flyingh.handler; import com.flyinh.ihandler.Handler; public class OtherHandler implements Handler { @Override public void handleRequest(String str) { // TODO Auto-generated method stub System.out.println("OtherHandler.handleRequest()"); } }
Client.java
package com.flyingh.client; import com.flyingh.handler.HandlerA; import com.flyingh.handler.HandlerB; import com.flyingh.handler.HandlerC; import com.flyingh.handler.OtherHandler; import com.flyinh.ihandler.Handler; public class Client { public static void main(String[] args) { Handler handler = new HandlerA(new HandlerC(new HandlerB( new OtherHandler()))); handler.handleRequest("B"); System.out.println("************"); handler.handleRequest("C"); System.out.println("************"); handler.handleRequest("A"); System.out.println("************"); handler.handleRequest("D"); } }
程序运行结果如下:
HandlerB.handleRequest() ************ HandlerC.handleRequest() ************ HandlerA.handleRequest() ************ OtherHandler.handleRequest()
2).
Handler.java
package com.flyingh.ihandler; import com.flyingh.irequest.Request; public interface Handler { void handleRequest(Request request); }
Request.java
package com.flyingh.irequest; public interface Request { }
RequestA.java
package com.flyingh.request; import com.flyingh.irequest.Request; public class RequestA implements Request { }
RequestB.java
package com.flyingh.request; import com.flyingh.irequest.Request; public class RequestB implements Request { }
RequestC.java
package com.flyingh.request; import com.flyingh.irequest.Request; public class RequestC implements Request { }
OtherRequest.java
package com.flyingh.request; import com.flyingh.irequest.Request; public class OtherRequest implements Request { }
HandlerA.java
package com.flyingh.handler; import com.flyingh.ihandler.Handler; import com.flyingh.irequest.Request; import com.flyingh.request.RequestA; public class HandlerA implements Handler { private Handler successor; public HandlerA(Handler successor) { super(); this.successor = successor; } @Override public void handleRequest(Request request) { // TODO Auto-generated method stub if (request instanceof RequestA) { System.out.println("HandlerA.handleRequest()"); } else { successor.handleRequest(request); } } }
HandlerB.java
package com.flyingh.handler; import com.flyingh.ihandler.Handler; import com.flyingh.irequest.Request; import com.flyingh.request.RequestB; public class HandlerB implements Handler { private Handler successor; public HandlerB(Handler successor) { super(); this.successor = successor; } @Override public void handleRequest(Request request) { // TODO Auto-generated method stub if (request instanceof RequestB) { System.out.println("HandlerB.handleRequest()"); } else { successor.handleRequest(request); } } }
HandlerC.java
package com.flyingh.handler; import com.flyingh.ihandler.Handler; import com.flyingh.irequest.Request; import com.flyingh.request.RequestC; public class HandlerC implements Handler { private Handler successor; public HandlerC(Handler successor) { super(); this.successor = successor; } @Override public void handleRequest(Request request) { // TODO Auto-generated method stub if (request instanceof RequestC) { System.out.println("HandlerC.handleRequest()"); } else { successor.handleRequest(request); } } }
OtherHandler.java
package com.flyingh.handler; import com.flyingh.ihandler.Handler; import com.flyingh.irequest.Request; public class OtherHandler implements Handler { @Override public void handleRequest(Request request) { // TODO Auto-generated method stub System.out.println("OtherHandler.handleRequest()"); } }
Client.java
package com.flyingh.client; import com.flyingh.handler.HandlerA; import com.flyingh.handler.HandlerB; import com.flyingh.handler.HandlerC; import com.flyingh.handler.OtherHandler; import com.flyingh.ihandler.Handler; import com.flyingh.irequest.Request; import com.flyingh.request.OtherRequest; import com.flyingh.request.RequestA; import com.flyingh.request.RequestB; import com.flyingh.request.RequestC; public class Client { public static void main(String[] args) { Handler handler = new HandlerA(new HandlerC(new HandlerB( new OtherHandler()))); Request requestB = new RequestB(); handler.handleRequest(requestB); System.out.println("***************"); Request requestA = new RequestA(); handler.handleRequest(requestA); System.out.println("***************"); Request requestC = new RequestC(); handler.handleRequest(requestC); System.out.println("***************"); Request otherRequest = new OtherRequest(); handler.handleRequest(otherRequest); } }
程序运行结果如下:
HandlerB.handleRequest() *************** HandlerA.handleRequest() *************** HandlerC.handleRequest() *************** OtherHandler.handleRequest()
发表评论
文章已被作者锁定,不允许评论。
-
Interpreter
2011-11-24 21:19 838Interpreter Pattern:其意图是给定一个语言, ... -
Visitor
2011-11-24 17:37 659Visitor Pattern:表示一个作用于某对象结构中的各 ... -
Mediator
2011-11-24 16:22 662Mediator Pattern: 用一 ... -
Prototype
2011-11-24 11:32 605Prototype Pattern:就是通过复制现在已经存在的 ... -
Memento
2011-11-23 21:56 685Memento Pattern:在不破坏封闭的前提下,捕获一个 ... -
Flyweight
2011-11-23 18:38 650享元模式以共享的方式高效地支持大量的细粒度对象. 1).Fl ... -
Builder
2011-11-22 16:38 763Builder Pattern:可以将一个产品的内部表象与产品 ... -
Bridge
2011-11-22 15:05 684桥梁模式的用意是"将抽象化(Abstraction) ... -
Abstract Factory
2011-11-21 22:00 644下面以Mac和PC的CPU和RAM为例,代码如下: Cpu. ... -
Proxy
2011-11-18 18:47 660Proxy Pattern:对其他对象提供一种代理以控制对这个 ... -
State
2011-11-18 15:57 677State Pattern:当一个对象的内在状态改变时允许改变 ... -
Composite
2011-11-17 17:09 792Composite Pattern:意图是将对象组合成树形结构 ... -
Iterator
2011-11-16 16:56 889Iterator Pattern:其意图是提供一种方法顺序访问 ... -
Template Method
2011-11-16 11:43 659模板方法模式:在一个方法中定义一个算法的骨架,而将一些实 ... -
Facade
2011-11-15 23:00 596Facade Pattern:为子系统中的各类(或结构与方法) ... -
Adapter
2011-11-15 21:43 630Adapter Pattern:将一个类的接口,转换成客户所期 ... -
Command
2011-11-14 23:06 5721).下面以Boss和Clerk为例: Clerk.java ... -
Factory Method
2011-11-13 20:44 595Simple Factory: 以Fruit为例,以下是实现 ... -
Decorator
2011-11-12 23:09 570装饰者可以在所委托被装饰者的行为之前与/或之后,加上自己的 ... -
Observer
2011-11-12 21:30 600观 察 者 模 式 定义了对象之间的一对多依赖,这样一来 ...
相关推荐
**Chain of Responsibility模式详解** Chain of Responsibility模式是GOF(GoF,Gang of Four)在他们的经典著作《设计模式:可复用面向对象软件的基础》中提出的23种设计模式之一,属于行为模式类别。这个模式的...
**Chain of Responsibility 模式详解** Chain of Responsibility(责任链)模式是一种行为设计模式,它允许将请求沿着处理者对象的链进行发送,每个对象都可以处理请求或将其传递给链中的下一个对象。这种模式常...
责任链模式(Chain of Responsibility Pattern)是一种常见的行为模式。 使多个对象都有处理请求的机会,从而避免了请求的发送者和接收者之间的耦合关系。将这些对象串成一条链,并沿着这条链一直传递该请求,直到有...
C#面向对象设计模式 Chain of Responsibility 职责链模式 视频讲座下载
### (行为型模式) Chain Of Responsibility 职责链模式 #### 李建忠 jianzhong.lee@gmail.com #### 设计模式论坛: forum.softcompass.com #### 上海祝成科技高级培训讲师 www.softcompass.com #### 请求的发送者...
责任链模式(Chain of Responsibility Pattern)是一种行为型设计模式,它允许将请求的发送者和接收者解耦。通过将请求沿着处理链传递,直到有对象处理该请求为止,这种模式避免了请求发送者与具体处理者之间的紧...
责任链模式(Chain of Responsibility)是一种行为设计模式,它允许将请求沿着处理者对象的链进行传递,直到某个对象能够处理这个请求。这种模式的主要优点是解耦了发送者和接收者之间的关系,使得系统更加灵活,...
职责链模式(Chain of Responsibility Pattern)是一种行为设计模式,它允许将请求的发送者和接收者解耦,使得多个对象都有可能处理一个请求,而无需显式指定接收者。在这个模式中,请求沿着一个处理者链进行传递,...
职责链模式(Chain of Responsibility)是一种行为型设计模式,它允许将请求沿着处理者对象的链进行传递,直到某个对象能够处理这个请求。在C#中,职责链模式的应用可以帮助我们构建灵活、可扩展的系统,减少对象...
责任链(Chain of Responsibility)模式是一种行为设计模式,它允许我们向对象链中传递请求,让每个对象决定是否处理这个请求。在Java中,这种模式常用于事件处理、日志系统或者权限控制等场景,其核心思想是将处理...
职责链模式(Chain of Responsibility)是一种行为型设计模式,它允许你将请求沿着处理者对象的链进行传递,直到某个对象处理该请求。在C#编程中,职责链模式能够帮助我们实现一种松耦合的架构,使得请求的发送者和...
**Java设计模式——责任链(Chain of Responsibility)** 在软件工程中,设计模式是一种解决常见问题的可重用解决方案。责任链模式是行为设计模式之一,它的主要思想是将请求的发送者和接收者解耦,通过将多个处理...
### C#面向对象设计模式纵横谈(14):Chain of Responsibility 职责链模式(行为型模式) #### 概述 在本篇文章中,我们将深入探讨C#中的Chain of Responsibility(职责链)模式,这是行为型设计模式的一种。虽然标题...
设计模式-责任链的演示项目,导入eclipse中可直接运行,编程语言:java 设计模式学习请参考博客 https://www.li-tian.net.cn/archives/2020-01-27-23-01-15
System.out.println("Department Manager approved the request of $" + amount); } else if (successor != null) { successor.approve(amount); } } } // 类Director和CEO类似,根据审批额度决定是否批准或...
NULL 博文链接:https://linkcqu.iteye.com/blog/355806
责任链模式(Chain of Responsibility,CoR)是一种行为设计模式,它允许将请求沿着处理者对象的链式结构进行传递,直到某个对象处理这个请求。每个处理者对象都包含对下一个处理者的引用,如果当前处理者无法处理...
**PHP设计模式:Chain Of Responsibility(职责链模式)** 职责链模式是一种行为设计模式,它的主要目的是解耦请求的发送者和接收者,通过创建一个处理请求的对象链,使得多个对象都有机会处理这个请求。在PHP中,...
1. **Chain of Responsibility模式**:Commons Chain 是对Chain of Responsibility设计模式的一个实现。在这个模式中,多个对象形成一个链,每个对象都可以处理请求,或者将请求传递给链上的下一个对象。这种模式...