1.定义:将一个请求从练市的首段出发沿着链的路径依次传递给每个节点对象,直到有对象处理这个请求为止,使多个对象都有机会处理请求,从而避免的请求发送者与接收者之间的耦合关系,是变成更有灵活性。
2.使用场景:
2.1:有多个对象可以处理同一个请求,具体哪个对象处理该请求由运行时刻自动确定;
2.2:在不明确指定接收者的情况下向多个对象中的一个提交一个请求;
2.3:可动态指定一组对象处理请求
3.优缺点:
优点:3.1:降低耦合度,将请求发送者合接收则解耦
3.2:简化了对象,使对象不需要知道链的结构
3.3:增强给对象指派职责的灵活性,通过改变链内的成员或则调动它们的次序,允许动态的新增或者删除责任;
缺点:3.1:不能保证请求一定被接收
3.2:系统性能将受到一定的影响,而且在进行代码调试时候不太方便,可能造成循环调用
3.3:可能不容易观察运行时的特征,有碍于出错
4.android源码中使用
4.1:android中触摸事件的传递机制,就属于责任链模式从Activity 到phoneWindow,再到我们自己的RootView以及子View层层传递,直到有View消费改事件;
4.2:okhttp内部使用了责任链模式来完成interceptor拦截器的调用;
5.实例演示公司中请求报销费用例子,不同领导可以批放不同的额度报销,职员提交后,申请由下往上传递的,直到有领导出现申请
5.1创建领导基类:
5.2创建不同层级领导实现类,依次为主张,主管
5.3创建不同的领导对象,关联责任链,进项报销申请
责任链模式
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 责任链模式(Chain of Responsibility) 在现实生活中,常常会出现这样的事例:一个请求有多个对...