对于cor模式,设计模式之Chain of Responsibility
文章已经讲述了cor的好处,以及如何使用。
说白了,就是推卸责任,一直推到一个能担当此责任的。此模式是个行为模式
《java与模式》书中讲述:
模
式意图:将多个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。客户端并不知道链上的哪个对象最终处理这个请求,从而降低了请求的发
送者和接
收者之间的耦合关系。
职责链设计模式 大概有三个角色:
(1)请求(
Request
):封装请
求信息
(2)
处理器(
Handler
):
处理请求(Request),一个具体处理器一般只处理一种请
求,如果它不能处理传递过来的请求,那么它就把该请求传递给职责链中的下一个处理器(后继处理器 successor)。
(3)客户端(
Client
):
发送请求
对
于handler的作用,
是模式的核心理念所在,解耦就得引入第三方,通过handler连接client与
request,达到解耦功能。
这是模式常用伎俩。
package cor1;
/**
*
* @Filename: Handler.java
* @Description:Handler 作用:请求的发送者和接受者之间解耦
*/
public abstract class Handler {
//下一个处理者
protected Handler successor;
/**
* 具体处理请求
* @param request
*/
public abstract void handleRequest(Request request);
public Handler getSuccessor() {
return successor;
}
public void setSuccessor(Handler successor) {
this.successor = successor;
}
}
package cor1;
public interface Request {
/**
* 请求具体行为
*/
public void execute();
}
package cor1;
public class PrintHandler extends Handler {
@Override
public void handleRequest(Request request) {
if (request instanceof PrintRequest) {
request.execute();
} else {
System.out.println("PrintHandler can't handle " + request.getClass().getSimpleName());
if (successor != null) {
successor.handleRequest(request);
}
}
}
}
package cor1;
public class SaveHandler extends Handler {
@Override
public void handleRequest(Request request) {
if (request instanceof SaveRequest) {
request.execute();
} else {
System.out.println("SaveHandler can't handle " + request.getClass().getSimpleName());
if (successor != null) {
successor.handleRequest(request);
}
}
}
}
package cor1;
public class PrintRequest implements Request{
@Override
public void execute() {
System.out.println("print request");
}
}
package cor1;
public class SaveRequest implements Request{
/* (non-Javadoc)
* @see cor1.Request#execute()
*/
@Override
public void execute() {
System.out.println("save request");
}
}
package cor1;
public class Client {
/**
* @param args
*/
public static void main(String[] args) {
Handler ph = new PrintHandler();
Handler sh = new SaveHandler();
ph.setSuccessor(sh);
sh.setSuccessor(ph);
Request pr = new PrintRequest();
Request sr = new SaveRequest();
ph.handleRequest(pr);
ph.handleRequest(sr);
sh.handleRequest(pr);
sh.handleRequest(sr);
}
}
转自:http://www.java1995.cn/blog/item/119
分享到:
相关推荐
总结,Chain of Responsibility模式提供了一种灵活的处理请求的方式,允许请求在多个对象间传递,直到找到合适的处理者。通过解耦和多级处理,该模式提高了系统的可扩展性和可维护性。在实际开发中,我们可以结合...
C#面向对象设计模式 Chain of Responsibility 职责链模式 视频讲座下载
C#面向对象设计模式 (行为型模式) Chain Of Responsibility 职责链模式 视频讲座下载
责任链模式(Chain of Responsibility,CoR)是一种行为设计模式,它允许将请求沿着处理者对象的链式结构进行传递,直到某个对象处理这个请求。每个处理者对象都包含对下一个处理者的引用,如果当前处理者无法处理...
责任链模式(Chain of Responsibility Pattern)是一种常见的行为模式。 使多个对象都有处理请求的机会,从而避免了请求的发送者和接收者之间的耦合关系。将这些对象串成一条链,并沿着这条链一直传递该请求,直到有...
责任链模式(Chain of Responsibility Pattern)是一种行为型设计模式,它允许将请求的发送者和接收者解耦。通过将请求沿着处理链传递,直到有对象处理该请求为止,这种模式避免了请求发送者与具体处理者之间的紧...
责任链模式(Chain of Responsibility)是一种行为设计模式,它允许将请求沿着处理者对象的链进行传递,直到某个对象能够处理这个请求。这种模式的主要优点是解耦了发送者和接收者之间的关系,使得系统更加灵活,...
职责链模式(Chain of Responsibility Pattern)是一种行为设计模式,它允许将请求的发送者和接收者解耦,使得多个对象都有可能处理一个请求,而无需显式指定接收者。在这个模式中,请求沿着一个处理者链进行传递,...
职责链模式(Chain of Responsibility)是一种行为型设计模式,它允许将请求沿着处理者对象的链进行传递,直到某个对象能够处理这个请求。在C#中,职责链模式的应用可以帮助我们构建灵活、可扩展的系统,减少对象...
### C#面向对象设计模式纵横谈(14):Chain of Responsibility 职责链模式(行为型模式) #### 概述 在本篇文章中,我们将深入探讨C#中的Chain of Responsibility(职责链)模式,这是行为型设计模式的一种。虽然标题...
职责链模式(Chain of Responsibility)是一种行为型设计模式,它允许你将请求沿着处理者对象的链进行传递,直到某个对象处理该请求。在C#编程中,职责链模式能够帮助我们实现一种松耦合的架构,使得请求的发送者和...
1. **Chain of Responsibility模式**:Commons Chain 是对Chain of Responsibility设计模式的一个实现。在这个模式中,多个对象形成一个链,每个对象都可以处理请求,或者将请求传递给链上的下一个对象。这种模式...
**Java设计模式——责任链(Chain of Responsibility)** 在软件工程中,设计模式是一种解决常见问题的可重用解决方案。责任链模式是行为设计模式之一,它的主要思想是将请求的发送者和接收者解耦,通过将多个处理...
责任链(Chain of Responsibility)模式是一种行为设计模式,它允许我们向对象链中传递请求,让每个对象决定是否处理这个请求。在Java中,这种模式常用于事件处理、日志系统或者权限控制等场景,其核心思想是将处理...
Chain of Responsibility模式是一种行为模式,旨在解决多个对象都有机会处理请求的问题。该模式可以将多个对象连成一条链,并沿着这条链传递请求,直到有一个对象处理它为止。该模式可以避免请求的发送者和接收者...
NULL 博文链接:https://linkcqu.iteye.com/blog/355806