background image

PHP

入门 PHP 设计模式之责任链模式

本文是对 PHP 设计模式中的责任链模式进行了详细的分析介绍,需要的朋友参考下
责任链模式,其目的是组织一个对象链处理一个如方法调用的请求。
当 ConcreteHandler(具体的处理程序)不知道如何满足来自 Client 的请求时,或它的目
的不是这个时,它会委派给链中的下一个 Handler(处理程序)来处理。
 
这个设计模式通常和复合模式一起使用,其中有些叶子或容器对象默认委派操作给它们
的父对象。另一个例子是,本地化通常是使用责任链处理的,当德语翻译适配器没有为翻
译关键词找到合适的结果时,就返回到英语适配器或干脆直接显示关键词本身。
 
耦合减少到最低限度:Client 类不知道由哪个具体的类来处理请求;在创建对象图时配置
了链;ConcreteHandlers 不知道哪个对象是它们的继承者。行为在对象之间分配是成功的,
链中最近的对象有优先权和责任满足请求。
 
参与者:
◆Client(客户端):向 Handler(处理程序)提交一个请求;
◆Handler(处理程序)抽象:接收一个请求,以某种方式满足它;
◆ConcreteHandlers(具体的处理程序):接收一个请求,设法满足它,如果不成功就委
派给下一个处理程序。
下面的代码实现了一个最著名的责任链示例:多级缓存。

 

复制代码 代码如下:
 

/** 
* The Handler abstraction. Objects that want to be a part of the 
* ChainOfResponsibility must implement this interface directly or via 
* inheritance from an AbstractHandler. 
*/

 

interface

 KeyValueStore 

/** 
* Obtain a value. 
* @param string $key 
* @return mixed 
*/

 

public

 

function

 get(

$key

);