责任链模式(Chain of Responsibility)

一:定义

    使多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这个条链传递请求,直到有对象处理它为止。

 

二:《设计模式之禅》和《Design Pattern GoF》的介绍,责任链模式是有且只有一个对象处理请求。我认为下面的例子可以理解为责任链模式的一个变种,

它也是沿着一个对象链传递请求, 但是不止一个对象最终对请求做出了响应,但是在链的前面的对象有权利选择是否继续往后传递请求。

    假设android界面的一个“按钮”目前已经获取了焦点,并注册了对按键事件的监听onKeyEventListener,同时它所在的Activity也重载了

onKeyDown 方法,此时按键事件发生的话,“按钮”首先获得处理事件的权利,它可以选择做出响应也可以选择什么都不做,然后返回一个boolean值,

如果返回true则表示事件已经被消化了,不再往下传递。如果返回false则Activity接到这个事件,然后和“按钮”一样,它做出响应后也返回一个boolean

值,如果是true则传递终止,否则继续把事件递给系统。

    android UI 框架就是这样处理按键事件的, 更多时候比这个情况的链涉及的对象还要多,但处理原则是一样,在链的前面的对象相对“权限”比较高。

posted @ 2016-07-01 15:43  KbDaVinci  阅读(191)  评论(0编辑  收藏  举报