责任链模式
责任链模式(Chain of Responsibility Pattern)是一种行为型设计模式,其目的是将请求从一个对象传递到另一个对象,直到找到能够处理该请求的对象为止。
下面是在PHP中实现责任链模式的一些示例代码:
1、创建一个抽象处理器类(Handler),定义处理器的接口:
abstract class Handler {
protected $nextHandler;
public function setNextHandler($handler) {
$this->nextHandler = $handler;
}
abstract public function handle($request);
}
2、创建一个具体的处理器类(ConcreteHandlerA),实现抽象处理器类中的接口,如果当前处理器可以处理请求,则处理请求,否则将请求传递给下一个处理器:
class ConcreteHandlerA extends Handler {
public function handle($request) {
if ($request == "A") {
echo "ConcreteHandlerA处理请求:$request\n";
} else {
$this->nextHandler->handle($request);
}
}
}
3、创建另一个具体的处理器类(ConcreteHandlerB),实现抽象处理器类中的接口,如果当前处理器可以处理请求,则处理请求,否则将请求传递给下一个处理器:
class ConcreteHandlerB extends Handler {
public function handle($request) {
if ($request == "B") {
echo "ConcreteHandlerB处理请求:$request\n";
} else {
$this->nextHandler->handle($request);
}
}
}
4、创建一个客户端类(Client),在其中创建具体处理器类的对象,并将它们连接成责任链:
class Client {
public function run() {
$handlerA = new ConcreteHandlerA();
$handlerB = new ConcreteHandlerB();
$handlerA->setNextHandler($handlerB);
$handlerA->handle("A");
$handlerA->handle("B");
$handlerA->handle("C");
}
}
$client = new Client();
$client->run();
上述代码的输出结果为:
ConcreteHandlerA处理请求:A
ConcreteHandlerB处理请求:B
说明责任链模式已经成功地处理了请求。
评论
共0 条评论