Chinaunix首页 | 论坛 | 博客
  • 博客访问: 101361
  • 博文数量: 31
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 578
  • 用 户 组: 普通用户
  • 注册时间: 2014-11-18 11:01
文章分类

全部博文(31)

文章存档

2015年(13)

2014年(18)

分类: Java

2014-11-25 11:03:32

先说责任链模式是什么东西:  使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理他为止。
 打个比方, 请假这个事情,如果你的请假时间小于0.5天,那么只需要向项目经理打声招呼就OK了。如果超过了0.5天,但是还小于2天,那么就要去找人事部处理,当然,这就要扣工资了。如果超过了2天,你就需要去找总经理了,工资当然也玩完了。在实际情况中我们并没有按照天数去找对应的领导,而是直接给我们直接上级,他一看,我管不了,就丢给另一个部门,然后一层层的传递,直到有一个处理了你的请假,然后给你发了同意的邮件。之间他们怎么流转的流程你不会知道,也不用去关心.这个就是现实中的责任链模式.
它有什么好处呢, 他的好处是, 每个人都可以去动态地指定他的继任者,比如人事不在,哪项目经理就可以跳过人事直接去找老总. 你也可以直接去找老总.  可以访问责任链中的任何一个节点作为开始节点. 这个模式还有一个好处是有一个兜底的,如果其他人都处理不了这个事,最后会有个大Boss站出来说,这些我全包了. 所以无论如何都会有人去处理.

责任链可能是一条直线、一个环链甚至一个树结构的一部分。

这个模式也有一个比较大的缺点,就是中间有许多的类只做了一个传递工作,并没有实际的用途,所以如果链比较长,比较复杂,会产生许多的内存垃圾对象.


适合使用责任链模式的情况

1、在许多对象可以处理用户请求的时候

2、希望用户不必明确处理者的时候,同时向多个处理者发送请求

3、程序希望动态的订制可处理用户请求的集合对象

相关代码,请看 http://blog.csdn.net/liuchangqing123/article/details/7386912


阅读(870) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~