Android设计模式-8-责任链模式

1. 定义

将一个请求从链式的首端发出,沿着链的路径依次传递给每个节点对象,直到有对象处理这个请求为止,使多个对象都有机会处理请求,从而避免了请求发送者与接收者之间的耦合关系,使编程更有灵活性。

2. 使用场景

1. 有多个对象可以处理同一个请求,具体哪个对象处理该请求由运行时刻自动确定;

2. 在不明确指定接收者的情况下,向多个对象中的一个提交一个请求;

3. 可动态指定一组对象处理请求。

3. 优缺点

优点:

1. 降低耦合度,将请求的发送者和接收者解耦;

2. 简化了对象,使对象不需要知道链的结构;

3. 增强给对象指派职责的灵活性, 通过改变链内的成员或者调动它们的次序,允许动态地新增或者删除责任;

扫描二维码关注公众号,回复: 12431994 查看本文章

缺点:

1. 不能保证请求一定被接收;

2. 系统性能将受到一定影响,而且在进行代码调试时不太方便,可能会造成循环调用;

3. 可能不容易观察运行时的特征,有碍于除错;

4. Android源码中的使用

Android中的触摸事件的传递机制,就属于责任链模式,从Activity到PhoneWindow,再到我们自己的RootView及子View层层传递,直到有View消费该事件;

Okhttp 内部使用了责任链模式来完成每个 Interceptor 拦截器的调用;

5. 实例演示

以公司中申请报销费用为例,不同领导可以批放不同额度的报销,职员提交申请后,申请由下往上传递,直到有领导处理该申请;

1. 创建一个领导基类

2. 创建不同层级的领导实现类,依次为组长,主管,经理,老板

3. 创建不同的领导对象,关联责任链,进行报销申请

 我是今阳,如果想要进阶和了解更多的干货,欢迎关注公众号”今阳说“接收我的最新文章

猜你喜欢

转载自blog.csdn.net/o118abcdef/article/details/112302477