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

以下是一个简单的 PHP 命令行模式的示例:
<?php

// 命令接口
interface Command {
    public function execute();
}

// 具体命令类
class LightOnCommand implements Command {
    private $light;

    public function __construct(Light $light) {
        $this->light = $light;
    }

    public function execute() {
        $this->light->turnOn();
    }
}

// 接收者类
class Light {
    public function turnOn() {
        echo "灯打开了。\n";
    }

    public function turnOff() {
        echo "灯关闭了。\n";
    }
}

// 调用者类
class RemoteControl {
    private $command;

    public function setCommand(Command $command) {
        $this->command = $command;
    }

    public function pressButton() {
        $this->command->execute();
    }
}

// 客户端代码
$light = new Light();
$lightOnCommand = new LightOnCommand($light);

$remoteControl = new RemoteControl();
$remoteControl->setCommand($lightOnCommand);

$remoteControl->pressButton();

在这个例子中,Command 接口定义了命令对象的基本方法 execute。LightOnCommand 类是具体的命令类,负责封装对 Light 对象的操作。Light 类是接收者,负责执行实际的操作。

RemoteControl 类是调用者,它持有一个命令对象,并在按下按钮时调用命令的 execute 方法。这种设计方式允许我们轻松地添加新的命令,而无需更改调用者的代码。

命令行模式的优势在于它将请求的发送者和接收者解耦,使得系统更加灵活。它还支持命令的队列、撤销等特性。


转载请注明出处:http://www.pingtaimeng.com/article/detail/11953/PHP