先说责任链模式是什么东西:
使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理他为止。
打个比方, 请假这个事情,如果你的请假时间小于0.5天,那么只需要向项目经理打声招呼就OK了。如果超过了0.5天,但是还小于2天,那么就要去找人事部处理,当然,这就要扣工资了。如果超过了2天,你就需要去找总经理了,工资当然也玩完了。在实际情况中我们并没有按照天数去找对应的领导,而是直接给我们直接上级,他一看,我管不了,就丢给另一个部门,然后一层层的传递,直到有一个处理了你的请假,然后给你发了同意的邮件。之间他们怎么流转的流程你不会知道,也不用去关心.这个就是现实中的责任链模式.
它有什么好处呢, 他的好处是,
每个人都可以去动态地指定他的继任者,比如人事不在,哪项目经理就可以跳过人事直接去找老总. 你也可以直接去找老总.
可以访问责任链中的任何一个节点作为开始节点. 这个模式还有一个好处是有一个
兜底的,如果其他人都处理不了这个事,最后会有个大Boss站出来说,这些我全包了. 所以无论如何都会有人去处理.
责任链可能是一条直线、一个环链甚至一个树结构的一部分。
这个模式也有一个比较大的缺点,就是中间有许多的类只做了一个传递工作,并没有实际的用途,所以如果链比较长,比较复杂,会产生许多的内存垃圾对象.
适合使用责任链模式的情况
1、在许多对象可以处理用户请求的时候
2、希望用户不必明确处理者的时候,同时向多个处理者发送请求
3、程序希望动态的订制可处理用户请求的集合对象
相关代码,请看 http://blog.csdn.net/liuchangqing123/article/details/7386912
阅读(775) | 评论(0) | 转发(0) |