Chain of Responsibility模式
文中的代码示例,很是复杂,有重复,方法不关注
如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);
}
}
}
这个方法明显做了两件事,而且每个具体的handler中都得这样写。
所以现在重构下,把重复的事向上提一
层,并把方法分离成两个方法
Handler改成现在这个样:
package cor2;
/**
*
* @Filename: Handler.java
* @Description:Handler 作用:请求的发送者和接受者之间解耦
* 对@see cor1.Handler 进行了重构
*/
public abstract class Handler {
//下一个处理者
protected Handler successor;
/**
* template方法
* @param request
*/
public final void handleRequest(Request request){
if(canHandle(request)){
handle(request);
}else{
if(successor!=null){
successor.handle(request);
}
}
}
/**
* 是否可以处理此request
* @param request
* @return
*/
protected abstract boolean canHandle(Request request);
/**
* 具体处理请求
* @param request
*/
protected abstract void handle(Request request);
public Handler getSuccessor() {
return successor;
}
public void setSuccessor(Handler successor) {
this.successor = successor;
}
}
具体的单个Handler
package cor2;
public class PrintHandler extends Handler {
@Override
public void handle(Request request) {
System.out.println("PrintHandler handle " + request.getClass().getSimpleName());
request.execute();
}
@Override
protected boolean canHandle(Request request) {
if (request instanceof PrintRequest) {
return true;
}
return false;
}
}
request,client不变。优雅多了。
分享到:
相关推荐
### (行为型模式) Chain Of Responsibility 职责链模式 #### 李建忠 jianzhong.lee@gmail.com #### 设计模式论坛: forum.softcompass.com #### 上海祝成科技高级培训讲师 www.softcompass.com #### 请求的发送者...
行为型模式则关注对象间的交互和责任分配,例如策略模式(Strategy)、观察者模式(Observer)和责任链模式(Chain of Responsibility)。 JAVA设计模式是Java开发中的核心部分,因为Java语言的特性使得许多设计...
3. 行为型模式:这类模式主要关注对象间的交互和职责分配,包括责任链模式(Chain of Responsibility)、命令模式(Command)、解释器模式(Interpreter)、迭代器模式(Iterator)、中介者模式(Mediator)、备忘录...
3. 行为型模式:如策略模式(Strategy)、模板方法模式(Template Method)、观察者模式(Observer)、迭代器模式(Iterator)、命令模式(Command)、责任链模式(Chain of Responsibility)、备忘录模式(Memento...
Chain of Responsibility模式允许请求沿着处理者链传递,直到有一个处理者处理它为止。 #### Iterator模式 Iterator模式提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。 #### ...
8.3.2 Chain of Responsibility模式 8.4 Model-View-Controller 8.4.1 ViewModel模式 8.4.2 ASP.NET MVC框架 8.4.3 利用AutoMapper映射ViewModel 8.4.4 Castle MonoRail 8.5 Page Controller模式 8.6 小结 ...
3. 行为型模式:如策略模式(Strategy)、模板方法模式(Template Method)、观察者模式(Observer)、迭代器模式(Iterator)、命令模式(Command)、责任链模式(Chain of Responsibility)、备忘录模式(Memento...
* 责任链模式(Chain of Responsibility) * 命令模式(Command) * 备忘录模式(Memento) * 状态模式(State) * 访问者模式(Visitor) * 中介者模式(Mediator) * 解释器模式(Interpreter) 二、java 的 23 ...
第16章 责任链模式(Chain of Responsibility) 16.1 模式解说 16.2 结构和用法 16.2.1 模式结构 16.2.2 代码模板 16.2.3 问题讨论 16.3 范例与实践 16.3.1 责任链模式在项目审批系统中的应用 16.3.2 责任链...
5. **行为型模式**:如策略模式(Strategy)、模板方法模式(Template Method)、观察者模式(Observer)、命令模式(Command)、迭代器模式(Iterator)、责任链模式(Chain of Responsibility)、备忘录模式...
比如策略模式(Strategy)、模板方法模式(Template Method)、观察者模式(Observer)、迭代器模式(Iterator)、访问者模式(Visitor)、命令...职责链模式(Chain of Responsibility)和解释器模式(Interpreter)...
第16章 责任链模式(Chain of Responsibility) 16.1 模式解说 16.2 结构和用法 16.2.1 模式结构 16.2.2 代码模板 16.2.3 问题讨论 16.3 范例与实践 16.3.1 责任链模式在项目审批系统中的应用 ...
- 责任链模式(Chain of Responsibility):将请求沿链式对象传递,直到某个对象处理请求。 - 命令模式(Command):将请求封装为一个对象,以便使用不同的请求、队列请求或支持可撤销的操作。 - 解释器模式...
4. **行为型模式**:这类模式关注对象之间的交互和责任分配,如责任链模式(Chain of Responsibility)、命令模式(Command)、解释器模式(Interpreter)、迭代器模式(Iterator)、中介者模式(Mediator)、备忘录...
行为型模式关注对象之间的交互和责任分配,包括策略(Strategy)、模板方法(Template Method)、观察者(Observer)、命令(Command)、迭代器(Iterator)、访问者(Visitor)、备忘录(Memento)、状态(State)...
行为型模式则涉及对象间的行为分配,如观察者(Observer)、策略(Strategy)和责任链(Chain of Responsibility)等,它们主要处理对象之间的交互和行为模式。 PDF文档可能包含每个设计模式的详细解释、示例代码和...
10. **职责链模式(Chain of Responsibility Pattern)**:可以看作是信号与槽机制的一种变体,多个对象形成一个链,事件沿着链传递,直到被某个对象处理。 通过理解并应用这些设计模式,开发者能够更好地组织Qt...
行为型模式则关注对象之间的交互,如策略模式(Strategy)、观察者模式(Observer)和责任链模式(Chain of Responsibility),它们定义了对象如何相互协作执行任务。 在实际编程中,设计模式并不直接等于代码,...
- **Chain of Responsibility模式**:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。 - **Iterator模式**:提供一种方法顺序访问一个聚合对象中各个元素,而又不需暴露该对象的内部表示...
3. 行为型模式:这一类模式涉及到对象之间的通信和职责分配,如观察者模式(Observer)、责任链模式(Chain of Responsibility)、命令模式(Command)以及策略模式(Strategy)。这些模式提供了一种灵活的方式来...