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次,这不是很麻烦吗?
望答复
谢谢