责任链模式

责任链模式(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 条评论