设计模式--责任链模式
2020-12-25 本文已影响0人
wuuuuu_
定义:使多个对象都有机会处理请求,从而降低收发之间的耦合。将这些对象连成一条责任链,沿着链传递该请求,直到被处理。
责任链模式(Responsibility Pattern,行为型设计模式)将一个复杂的流程拆分给多个对象沿链逐一处理,或者给不同层级的对象沿链分级处理。
当任务下发后,会依次传递给接收对象,如果某个对象能处理就直接处理了,如果不能够处理,就传递给下一个接收对象。形成一个接收者对象链,避免链一个请求同时被多个接受者。
优点:
1.降低耦合度。它将请求的发送者和接受者解藕;
2.简化链对象。使得对象不需要直到链的结构;
3.增强给对象指派职责的灵活性。通过改变链内的成员或者调动它们的次序,允许动态的新增或删除责任;
4.增加新的请求处理类很方便。
缺点:
1.不能保证请求一定被接受;
2.会对链中处理者遍历,如果链中处理者较多,会对性能造成一定影响。
Android中责任链的运用
Android事件分发机制
事件传递路线
Activity -> PhoneWindow -> DecorView -> ViewGroup -> ... -> View
dispatchTouchEvent:事件下发。View和ViewGroup都有
onInterceptTouchEvent:拦截下发的事件,并交给自己onTouchEvent处理。ViewGroup有
onTouchEvent:事件上报。View和ViewGroup都有