5. 应用场景
- 多个对象处理同一请求时,但是具体由哪个对象去处理需要运行时做判断。
- 具体处理者不明确的情况下,向这组对象提交了一个请求。
6. 优点
- 代码的解耦,请求者与处理者的隔离分开。
- 易于扩展,新增处理者往链上加结点即可。
7. 缺点
- 责任链过长的话,或者链上的结点判断处理时间太长的话会影响性能,特别是递归循环的时候。
- 请求有可能遍历完链都得不到处理。
责任链模式在 Android 中的体现
还记得 Android 总的事件分发机制吗,主要有三个方法,
dispatchTouchEvent
onInterceptTouchEvent
onTouchEvent
dispatchTouchEvent ,这个方法主要是用来分发事件的
onInterceptTouchEvent,这个方法主要是用来拦截事件的(需要注意的是ViewGroup才有这个方法,View没有onInterceptTouchEvent这个方法
onTouchEvent这个方法主要是用来处理事件的
requestDisallowInterceptTouchEvent(true),这个方法能够影响父View是否拦截事件,true表示 不拦截事件,false表示拦截事件
Reference:
https://juejin.cn/post/6844903929604472846
No comments:
Post a Comment