十七. 责任链模式
整理自 《java与模式》阎宏编著
1.意图:
将多个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。客户端并不知道链上的哪个对象最终处理这个请求,从而降低了请求的发送者和接收者之间的耦合关系。
2.类图:
3.原理:
4.特征:
抽象处理者(Handler)角色:定义处理请求的接口。如有需要,可以定义设定和返回下家处理对象的引用的方法。
具体处理者(ConcreteHandler)角色:具体处理者接收到请求后,可以选择将请求处理掉,或者传给下家处理对象。
5.说明:
6.使用案例:
DHTML中的事件处理.
过滤器
7.代码:
//抽象处理者(Handler)角色 Handler.java
public abstract class Handler
{
protected Handler successor;
public abstract void handleRequest();
public void setSuccessor(Handler successor)
{
this.successor = successor;
}
public Handler getSuccessor()
{
return successor;
}
}
// ConcreteHandler1.java
public class ConcreteHandler1 extends Handler
{
public void handleRequest()
{
boolean someCondition = false;
if (someCondition)
{
//如果满足条件,进行处理
}
else
{
//否则,传递给下家处理
if (successor != null)
{
successor.handleRequest();
}
}
}
}
// ConcreteHandler2.java
public class ConcreteHandler2 extends Handler
{
public void handleRequest()
{
boolean someCondition = true;
if (someCondition)
{
//如果满足条件,进行处理
}
else
{
//否则,传递给下家处理
if (successor != null)
{
successor.handleRequest();
}
}
}
}
public class Client
{
public static int Main(String[] args)
{
// Set up chain (usually one need to be done once)
Handler firstHandler = new ConcreteHandler1();
Handler secondHandler = new ConcreteHandler2();
//Handler thirdHandler = new ConcreteHandler3();
firstHandler.setSuccessor(secondHandler);
//secondHandler.SetSuccessor(thirdHandler);
// After setting up the chain of responsibility, we can
// now generate requests and pass then off to the chain to be handled
firstHandler.handleRequest();
return 0;
}
}
分享到:
相关推荐
设计模式之责任链模式源码 设计模式之责任链模式源码 设计模式之责任链模式源码
spring责任链模式详解,包含项目中应用
一、责任链模式 现有 “战士”、“班长”、“排长”、“连长”,“营长”五种角色,当有人要请假时要进行以下处理 1.只能是下级象上级请假(如“排长”只能向“连长请假”) 2.班长可以批准1天内的假期,排长批5天,...
职责链模式 设计模式 Chain of Responsibility 若有问题望指出。
责任链模式代码
开始击鼓时,花束就开始依次传递,鼓声一落,如果花束在某人手中,则该人就得饮酒,这是很典型的行为责任链模式。 State模式主要解决的是在开发中时常遇到的根据不同的状态需要进行不同的处理操作的问题,而这样的...
责任链模式(Chain of Responsibility)的目标是使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递请求,直到有一个对象处理它为止。 在处理用户的...
责任链模式demo
C# 职责链模式 代码 模型代码,学习。
责任链模式的小例子
【设计模式】之责任链模式责任链模式概念责任链,顾名思义,就是用来处理相关事务责任的一条执行链,执行链上有多个节点,每个节点都有机会(条件匹配)处理请求事务,如果
设计模式的责任链模式的例子,希望对大家有用~~~~~~~~
责任链模式小demo
责任链模式 C++ 实现
设计模式之责任链模式Java版本实现和UML类图设计
ios平台中通过最简单的代码讲解责任链模式,可在博客http://blog.sina.com.cn/s/blog_161d504630102wxis.html中查看简单解释
JAVA 设计模式: 工厂模式 代理模式 迭代模式 责任链模式 源码
设计模式之责任链模式,使用形象化例子来解释说明。
设计模式C++学习之责任链模式(Chain of Responsibility)