参考资料:
https://www.imooc.com/learn/257
http://www.cnblogs.com/java-my-life/archive/2012/05/28/2516865.html
责任链模式实践代码
注:未完待续
目录
1、什么是责任链模式
2、责任链模式的结构
3、责任链模式涉及到的角色
4、如何实现责任链模式
5、责任链模式的应用
6、责任链模式如何解耦
7、纯的与不纯的责任链模式
8、责任链模式在Tomcat中的应用
1、什么是责任链模式
责任链模式
将接收者对象连成一条链,并在该链上传递请求,直到有一个接收者对象处理它。通过让更多对象有机会处理请求,避免了请求发送者和接收者之间的耦合。
责任链模式——From 阎宏博士的《JAVA与模式》
责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。
责任链可能是一条直线、一个环链或者一个树结构的一部分。
2、责任链模式的结构
Ref: http://www.cnblogs.com/java-my-life/archive/2012/05/28/2516865.html
3、责任链模式涉及到的角色
抽象处理者(Handler)角色、具体处理者(ConcreteHandler)角色、客户端
(1)抽象处理者(Handler)角色:
定义出一个处理请求的接口。
如果需要,接口可以定义出一个方法以设定和返回对下家的引用。
这个角色通常由一个Java抽象类或者Java接口实现。
上图中Handler类的聚合关系给出了具体子类对下家的引用,抽象方法handleRequest()规范了子类处理请求的操作。
(2)具体处理者(ConcreteHandler)角色:
具体处理者接到请求后,可以选择将请求处理掉,或者将请求传给下家。
由于具体处理者持有对下家的引用,因此,如果需要,具体处理者可以访问下家。
4、如何实现责任链模式
5、责任链模式的应用
生活中的责任链模式(COR): 申请折扣;
天然责任链:公司层级结构;
6、责任链模式如何解耦
TODO
7、纯的与不纯的责任链模式
一个纯的责任链模式要求一个具体的处理者对象只能在两个行为中选择一个:
一是承担责任,而是把责任推给下家。不允许出现某一个具体处理者对象在承担了一部分责任后又把责任向下传的情况。
在一个纯的责任链模式里面,一个请求必须被某一个处理者对象所接收;
在一个不纯的责任链模式里面,一个请求可以最终不被任何接收端对象所接收。
纯的责任链模式的实际例子很难找到,一般看到的例子均是不纯的责任链模式的实现。有些人认为不纯的责任链根本不是责任链模式,这也许是有道理的。但是在实际的系统里,纯的责任链很难找到。如果坚持责任链不纯便不是责任链模式,那么责任链模式便不会有太大意义了。
8、责任链模式在Tomcat中的应用
Ref:http://www.cnblogs.com/java-my-life/archive/2012/05/28/2516865.html
网友评论