首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络技术 > 网络基础 >

Chain of Responsibility方式

2012-10-09 
Chain of Responsibility模式对于cor模式,设计模式之Chain of Responsibility 文章已经讲述了cor的好处,以

Chain of Responsibility模式

对于cor模式,设计模式之Chain of Responsibility 文章已经讲述了cor的好处,以及如何使用。

说白了,就是推卸责任,一直推到一个能担当此责任的。此模式是个行为模式

《java与模式》书中讲述:

模式意图:将多个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。客户端并不知道链上的哪个对象最终处理这个请求,从而降低了请求的发送者和接收者之间的耦合关系。

职责链设计模式 大概有三个角色:
(1)请求(Request):封装请求信息
(2)处理器(Handler):处理请求(Request),一个具体处理器一般只处理一种请 求,如果它不能处理传递过来的请求,那么它就把该请求传递给职责链中的下一个处理器(后继处理器 successor)。
(3)客户端(Client):发送请求

对于handler的作用,是模式的核心理念所在,解耦就得引入第三方,通过handler连接client与request,达到解耦功能。

这是模式常用伎俩。

package cor1;public class PrintRequest implements Request{@Overridepublic void execute() {System.out.println("print request");}}
package cor1;public class SaveRequest implements Request{/* (non-Javadoc) * @see cor1.Request#execute() */@Overridepublic 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

1 楼 茶是树叶 2010-10-28   我想请教一下:你的例子是两个handler,假如要是10个,100个handler呢?是不是每个handler都要setSuccessorN次,这不是很麻烦吗?
望答复
谢谢

热点排行