22.Chain Of Responsibility(行为型模式)

来源:互联网 发布:linux hex编辑器 编辑:程序博客网 时间:2024/06/05 00:44

【起源】

         一个请求需要被多个对象中的一个处理,但不知道是哪一个。

         结构化的做法是用if...else... ,即将请求与处理对象的映射关系硬编码。

         希望找到一种方法,使映射关系灵活变化,即对“请求”和“处理对象”解耦。

 

【动机】

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

 

【核心】

         对于某个处理对象:1.检查是否可处理请求 2.可以就处理 3.不可以就交给另外一个对象;

         多个这样的处理对象按照指定关系排队,处理请求被看做“职责”,从前往后,就组成一条“职责链”。

         只需把请求交给排头的“处理对象”,请求就会沿着“职责链”传递下去,直到被处理为止。

         从结构化的角度来看,就是有优先级的判断处理机制。

                     现在换成了用面向对象来实现相同的功能,每个判断处理过程被封装成一个对象;

                     原来通过 if 语句的先后顺序确定优先级,现在通过对象之间的指定关系来确定;

         本质:以面向对象的方式,实现带有优先级的判读处理。

 

【代码实例】

  

 

【模型图】

原创粉丝点击