Chain of Responsibility 职责链 行为模式,使多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递请求,知道有个对象处理它。
Chain of Responsibility让我想到的就是flash中的事件流。当一个事件定义为冒泡事件,并且出发这个事件的对象是这显示列表中,这时这个事件流就会从舞台到目标对象,再从目标对象到舞台,这么一个流动。流线上的每一个对象都可以参与处理,但是这个流是可以控制的并不是向Chain of Responsibility一样,有对象处理它就会停止流向下一个显示对象,他是一个更加高级的Chain of Responsibility,但是核心的概念是一样的。
我先来看一下,这个模式的结构图。
这些类之间是一个松散的耦合,唯一共同点是在他们之间传递request. 也就是说,来了一个请求,A类先处理,如果没有处理,就传递到B类处理,如果没有处理,就传递到C类处理,就这样象一个链条(chain)一样传递下去。