职责链模式(Chain Of Responsibility Pattern)

来源:互联网 发布:淘宝卖家店铺找不到了 编辑:程序博客网 时间:2024/04/29 23:25

  当一个对象向多个对象发送相同的信息时,就需要一种策略来确定由哪个对象对所发送的信息进行处理,而这样的处理对象也只能有一个。使用case语句或if语句的方法会给程序的维护带来很大难度,这就需要职责链模式来完成。职责链模式将发送对象和接收对象进行了解耦,以更好的应对变化。

  职责链模式将接收对象形成一个链,发送对象将信息发送给接收对象链中的一个对象,这时,信息就沿着对象链向下传送,直到有一个对象对信息进行处理。

  二种形成职责链的方法:层次结构下的职责链(类似于合成模式)、非层次结构下的职责链

  层次结构,如图1所示,职责链由其Parent属性而形成,使其信息一直向上发送,直到被处理。

层次结构下的职责链

图1

 

  非层次结构,如图2所示,利用其构造函数形成的职责链。消息发送时,如果接收对象不能处理就直接发送给其obj属性进行处理即可,如果其存在的话。

非层次结构下的职责链

图2

 

 

原创粉丝点击