命令模式

命令模式(Command Pattern)是一种行为型设计模式,它将请求封装成对象,从而允许你使用不同的请求、队列或者日志来参数化其他对象。

在PHP中实现命令模式的一些示例代码如下:

1、创建一个抽象命令类(Command),定义命令的接口:

abstract class Command {
    protected $receiver;
    public function __construct($receiver) {
        $this->receiver = $receiver;
    }
    abstract public function execute();
}

2、创建具体的命令类(ConcreteCommandA和ConcreteCommandB),实现抽象命令类中的接口:

class ConcreteCommandA extends Command {
    public function execute() {
        $this->receiver->actionA();
    }
}
class ConcreteCommandB extends Command {
    public function execute() {
        $this->receiver->actionB();
    }
}

3、创建一个接收者类(Receiver),定义接收者的行为:

class Receiver {
    public function actionA() {
        echo "执行操作A\n";
    }
    public function actionB() {
        echo "执行操作B\n";
    }
}

4、创建一个调用者类(Invoker),调用命令对象执行命令:

class Invoker {
    protected $command;
    public function setCommand($command) {
        $this->command = $command;
    }
    public function executeCommand() {
        $this->command->execute();
    }
}

在客户端中创建具体命令对象和接收者对象,并将它们传递给调用者对象:

$receiver = new Receiver();
$commandA = new ConcreteCommandA($receiver);
$commandB = new ConcreteCommandB($receiver);
$invoker = new Invoker();
$invoker->setCommand($commandA);
$invoker->executeCommand();
$invoker->setCommand($commandB);
$invoker->executeCommand();

运行上述代码,输出结果为:

plaintextCopy code执行操作A
执行操作B

说明命令模式已经成功地执行了命令。

评论

0 条评论