[转]23种经典设计模式的java实现_5_职责链模式
2012-03-26 22:18
756 查看
对于职责链模式,一般是这么定义的:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系,即——将这些对象连成一条(处理)链,并沿着这条链传递该请求,直到这条链结束同时有一个对象处理它为止。
最经典的职责链模式应用就是JavaEE规范中web.xml的filter了,filters按照配置的顺序,依次处理根据其mapping条件过滤得到的web请求(response)/应答(request),从而可以实现诸如编码转换、事务封装、页面缓存等众多“职责”。
给出职责链模式的适用范围:
1、有多个的对象可以处理一个请求,哪个对象处理该请求运行时刻自动确定。
2、想在不明确指定接收者的情况下,向多个对象中的一个提交一个请求。
3、可处理一个请求的对象集合需要被动态指定。
下面这个范例模拟了一个软件行业中常见的项目处理流程,为一个项目(Project对象)的职责人员构造了一条处理链,然后向这个项目发出处理指令——从而在这条链上引发相关职责人员的处理。代码如下:
职责的接口定义,所有的职责人员都要具有这些功能:加入下一职责对象、处理消息(即行使职责)、获得下一职责对象。
package com.alex.designpattern.chainofresponsibility;
package com.alex.designpattern.chainofresponsibility;
package com.alex.designpattern.chainofresponsibility;
package com.alex.designpattern.chainofresponsibility;
package com.alex.designpattern.chainofresponsibility;
package com.alex.designpattern.chainofresponsibility;
package com.alex.designpattern.chainofresponsibility;
class Project {
private Chain chain;
public Chain getChain() {
return chain;
}
public void setChain(Chain chain) {
this.chain = chain;
}
}
结合这个例子,那就很容易理解web.xml中常用的filter了吧,每个filter都是职责链中的一环,它们按照自己的职责过滤web的请求、应答……这就是职责链模式。
最经典的职责链模式应用就是JavaEE规范中web.xml的filter了,filters按照配置的顺序,依次处理根据其mapping条件过滤得到的web请求(response)/应答(request),从而可以实现诸如编码转换、事务封装、页面缓存等众多“职责”。
给出职责链模式的适用范围:
1、有多个的对象可以处理一个请求,哪个对象处理该请求运行时刻自动确定。
2、想在不明确指定接收者的情况下,向多个对象中的一个提交一个请求。
3、可处理一个请求的对象集合需要被动态指定。
下面这个范例模拟了一个软件行业中常见的项目处理流程,为一个项目(Project对象)的职责人员构造了一条处理链,然后向这个项目发出处理指令——从而在这条链上引发相关职责人员的处理。代码如下:
职责的接口定义,所有的职责人员都要具有这些功能:加入下一职责对象、处理消息(即行使职责)、获得下一职责对象。
package com.alex.designpattern.chainofresponsibility;
package com.alex.designpattern.chainofresponsibility;
package com.alex.designpattern.chainofresponsibility;
package com.alex.designpattern.chainofresponsibility;
package com.alex.designpattern.chainofresponsibility;
package com.alex.designpattern.chainofresponsibility;
package com.alex.designpattern.chainofresponsibility;
class Project {
private Chain chain;
public Chain getChain() {
return chain;
}
public void setChain(Chain chain) {
this.chain = chain;
}
}
结合这个例子,那就很容易理解web.xml中常用的filter了吧,每个filter都是职责链中的一环,它们按照自己的职责过滤web的请求、应答……这就是职责链模式。
相关文章推荐
- 23种经典设计模式的java实现_5_职责链模式
- 23种经典设计模式的java实现_5_职责链模式
- 23种经典设计模式的java实现_5_职责链模式
- [转]23种经典设计模式的java实现_5_职责链模式
- 23种经典设计模式的java实现_4_生成器模式
- 23种经典设计模式的java实现_2_适配器模式
- 23种经典设计模式的java实现_2_适配器模式
- 23种经典设计模式的java实现之生成器模式
- 23种经典设计模式的java实现_3_桥接模式
- 23种经典设计模式的java实现_3_桥接模式
- 23种经典设计模式的java实现_1_抽象工厂模式
- 23种经典设计模式的java实现_1_抽象工厂模式
- 23种经典设计模式的java实现_4_生成器模式
- 23种设计模式之Java实现
- java实现的23种设计模式 (个人推荐)
- 23种设计模式之单例模式(java 实现)
- Java中23种经典设计模式
- 从追MM谈Java的23种设计模式(转就转经典的贴)
- Java_23种经典设计模式详解
- 经典:从追MM谈Java的23种设计模式