- 浏览: 25655 次
- 性别:
- 来自: 上海
文章分类
使多个对象都有机会处理请求,从而避免请求的发送者和接收者直接的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。
public abstract class Handler {
protected Handler successor;
public void setSuccessor(Handler successor) {
this.successor = successor;
}
public abstract void handleRequest();
}
public class ConcreteHandler1 extends Handler {
public void handleRequest() {
boolean someCondition = false;
if(someCondition) {
System.out.println("");
} else {
if(this.successor != null) {
this.successor.handleRequest();
}
}
}
}
public class ConcreteHandler2 extends Handler {
public void handleRequest() {
boolean someCondition = false;
if(someCondition) {
System.out.println("");
} else {
if(this.successor != null) {
this.successor.handleRequest();
}
}
}
}
客户端代码:
Handler h1 = new ConcreteHandler1();
Handler h2 = new ConcreteHandler2();
h1.setSuccessor(h2);
h1.handleRequest();
要注意在标准的职责链模式中,只要有对象处理了请求,这个请求就到此为止,不再被传递和处理了。
Web应用开发中的过滤器Filter,就类似于一个功能链,每个过滤负责自己的处理,然后转交给下一个过滤器,直到把所有的过滤器都走完,最后进入到Servlet中进行处理。
public abstract class Handler {
protected Handler successor;
public void setSuccessor(Handler successor) {
this.successor = successor;
}
public abstract void handleRequest();
}
public class ConcreteHandler1 extends Handler {
public void handleRequest() {
boolean someCondition = false;
if(someCondition) {
System.out.println("");
} else {
if(this.successor != null) {
this.successor.handleRequest();
}
}
}
}
public class ConcreteHandler2 extends Handler {
public void handleRequest() {
boolean someCondition = false;
if(someCondition) {
System.out.println("");
} else {
if(this.successor != null) {
this.successor.handleRequest();
}
}
}
}
客户端代码:
Handler h1 = new ConcreteHandler1();
Handler h2 = new ConcreteHandler2();
h1.setSuccessor(h2);
h1.handleRequest();
要注意在标准的职责链模式中,只要有对象处理了请求,这个请求就到此为止,不再被传递和处理了。
Web应用开发中的过滤器Filter,就类似于一个功能链,每个过滤负责自己的处理,然后转交给下一个过滤器,直到把所有的过滤器都走完,最后进入到Servlet中进行处理。
发表评论
-
访问者模式Visitor预留通路,回调实现
2014-03-13 16:55 379表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各 ... -
桥接模式Bridge分离抽象和实现
2014-03-13 16:55 491将抽象部分与它的实现部分分离,使它们都可以独立地变化。 桥接 ... -
装饰模式Decorator动态组合
2014-03-12 17:00 277动态地给一个对象添加 ... -
解释器模式Interpreters分离实现,解释执行
2014-03-12 16:27 296给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解 ... -
享元模式Flyweight分离与共享
2014-03-12 13:20 302运用共享技术有效地支持大量细粒度的对象。 安全实体:就是被系 ... -
备忘录模式Memento保存和回复内部状态
2014-03-11 17:47 434在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外 ... -
状态模式State根据状态来分离和选择行为
2014-03-11 17:20 400允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改 ... -
策略模式Strategy分离算法,选择实现
2014-03-11 15:26 418迪米特法则:LoD,最少知识原则。 如果两个类不必彼此直接通信 ... -
模板方法模式Templete Method 固定算法骨架
2014-03-11 11:15 538定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法 ... -
组合模式Composite统一叶子对象和组合对象
2014-03-07 18:18 308将对象组合成树型结构以表示“部分-整体”的层次结构。组合模式使 ... -
迭代器模式Iterator 控制访问聚合对象中的元素
2014-03-07 17:57 410提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该 ... -
命令模式Command 封装请求
2014-03-07 16:26 381将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数 ... -
观察者模式Observer订阅模式-触发联动
2014-03-07 11:19 384定义对象间的一种一对 ... -
代理模式Proxy 为别人做嫁衣(控制对象访问)
2014-03-06 00:39 332为其他对象提供一种代理以控罪对这个对象的访问。 代理大致被分为 ... -
中介者模式Mediator 封装交互
2014-03-06 00:19 370用一个中介对象来封装 ... -
原型模式Prototype 克隆生成对象
2014-03-06 00:19 567用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象 ... -
生成器模式Builder 分离整体构建算法和部件构造
2014-03-06 00:19 307将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建 ... -
抽象工厂模式 Abstract Factory 选择产品簇的实现
2014-03-06 00:20 417工厂方法模式或简单工 ... -
工厂方法模式Factory Method延迟到子类来选择实现
2014-03-05 18:12 951定义一个用于创建对象 ... -
单例模式Singleton某个类只需要一个类实例
2014-03-05 16:46 426保证一个类只有一个实例,并提供一个访问它的全局访问点。 懒汉 ...
相关推荐
职责链模式(Chain of Responsibility)是一种行为设计模式,它的核心思想是将一系列处理请求的对象组织成一条链,每个对象都包含对请求的处理或传递的责任。在C++中实现职责链模式,我们可以创建一个抽象处理器类,...
职责链模式(Chain of Responsibility Pattern)是设计模式中的一种对象行为型模式,它的核心思想是建立一条处理请求的链条,每个对象都包含处理请求的一部分责任,请求沿着链传递,直到被某个对象处理。这种模式...
11. 职责链模式(Chain of Responsibility Pattern): 职责链模式是用来消除请求的发送者和接收者之间的耦合。它的主要作用是降低对象之间的耦合,提高系统的灵活性和可扩展性。 这些设计模式可以帮助开发者编写...
职责链模式(Chain of Responsibility Pattern)是一种行为设计模式,它允许将请求沿着处理者对象的链进行传递,直到被某个对象处理。这种模式的核心在于,每个处理者对象都包含对下一个处理者的引用,使得请求可以...
行为型模式涉及对象间交互和责任分配,例如策略模式(Strategy)、观察者模式(Observer)和职责链模式(Chain of Responsibility)。 1. 单例模式(Singleton):确保一个类只有一个实例,并提供全局访问点。在...
如策略模式(Strategy)、模板方法模式(Template Method)、观察者模式(Observer)、命令模式(Command)、迭代器模式(Iterator)、访问者模式(Visitor)、备忘录模式(Memento)、状态模式(State)、职责链...
职责链模式(Chain of Responsibility)让多个对象有机会处理请求,从而避免请求的发送者和接收者之间的耦合。 在实际编程中,理解并灵活运用设计模式能够提升代码质量,增强系统的可扩展性和可维护性。学习设计...
如策略模式(Strategy)、模板方法模式(Template Method)、观察者模式(Observer)、命令模式(Command)、迭代器模式(Iterator)、访问者模式(Visitor)、备忘录模式(Memento)、状态模式(State)、职责链...
十、职责链模式(Chain of Responsibility) 职责链模式将请求的发送者和接收者解耦,多个对象形成一个处理请求的链条,请求沿着链条传递,直到某个对象处理。 以上设计模式是Java开发中的核心概念,理解和熟练应用...
行为型模式着重于对象之间的职责分配和交互,包括责任链模式(Chain of Responsibility)、命令模式(Command)、解释器模式(Interpreter)、迭代器模式(Iterator)、备忘录模式(Memento)、观察者模式(Observer...
2. **职责链(Chain of Responsibility)** 职责链模式允许将多个对象链接成一个链,请求在链上逐个传递,直到找到合适的处理者。MFC利用此模式处理Windows的消息系统。当一个消息发送时,它会沿对象链传递,每个...
行为型模式则涉及对象之间的交互和责任分配,例如观察者模式(Observer)、策略模式(Strategy)和职责链模式(Chain of Responsibility)。 在“设计模式 含代码及讲解”中,你可能会学到以下关键点: 1. **单例...
如策略模式(Strategy)、模板方法模式(Template Method)、观察者模式(Observer)、命令模式(Command)、迭代器模式(Iterator)、访问者模式(Visitor)、备忘录模式(Memento)、状态模式(State)、职责链...
行为型模式如策略(Strategy)、观察者(Observer)和职责链(Chain of Responsibility)等,关注对象之间的交互和行为传递。 1. **单例模式**:保证一个类只有一个实例,并提供全局访问点。在Java中,可以使用双重...
如单例模式(Singleton)、建造者模式(Builder)、观察者模式(Observer)、装饰器模式(Decorator)、代理模式(Proxy)、享元模式(Flyweight)、桥接模式(Bridge)、组合模式(Composite)、策略模式(Strategy...
10. **职责链模式(Chain of Responsibility Pattern)** 职责链模式避免将请求的发送者和接收者耦合在一起,而是将多个处理对象链接成一条链,请求沿着链传递,直到被某个对象处理。在C++中,可以使用指针链式结构来...
行为型模式涵盖了策略(Strategy)、模板方法(Template Method)、观察者(Observer)、迭代器(Iterator)、访问者(Visitor)、备忘录(Memento)、状态(State)、职责链(Chain of Responsibility)、命令...
职责链模式(Chain of Responsibility)让多个对象有机会处理请求,从而避免硬编码的接收者和发送者之间的耦合;命令模式(Command)将请求封装为对象,以便使用不同的请求、队列请求或支持撤销操作。 设计模式不是...
职责链(Chain of Responsibility)模式避免硬编码的接收者,让请求沿着处理者链传递;命令(Command)模式将请求封装为一个对象,以便使用不同的请求、队列请求或记录请求日志;迭代器(Iterator)模式提供一种方法...
除了这些,还有其他的设计模式,例如装饰器模式(Decorator)、代理模式(Proxy)、外观模式(Facade)、享元模式(Flyweight)、职责链模式(Chain of Responsibility)、命令模式(Command)、解释器模式...