PHP 命令模式
命令模式(Command Pattern)是一种行为设计模式,它将请求封装为对象,从而使你可以用不同的请求对客户进行参数化。这种模式的主要目的是将“请求”与“执行请求”的操作解耦,使得请求可以被存储、传递和调用。
命令模式的基本概念
命令模式的核心思想是将一个请求封装为一个对象,从而使你可以用不同的请求对客户进行参数化。命令模式通常包含以下几个角色:
- 命令接口(Command Interface):定义了执行操作的接口。
- 具体命令(Concrete Command):实现了命令接口,包含了实际的操作逻辑。
- 接收者(Receiver):知道如何执行与请求相关的操作。
- 调用者(Invoker):持有命令对象,并在某个时间点调用命令对象的执行方法。
- 客户端(Client):创建命令对象并设置其接收者。
命令模式的实现
让我们通过一个简单的例子来理解命令模式的实现。假设我们有一个简单的文本编辑器,用户可以执行“复制”和“粘贴”操作。我们将使用命令模式来实现这些操作。
1. 定义命令接口
首先,我们定义一个命令接口 Command
,它包含一个 execute
方法:
interface Command {
public function execute();
}
2. 创建具体命令
接下来,我们创建两个具体命令类 CopyCommand
和 PasteCommand
,它们分别实现了 Command
接口:
class CopyCommand implements Command {
private $receiver;
public function __construct(Receiver $receiver) {
$this->receiver = $receiver;
}
public function execute() {
$this->receiver->copy();
}
}
class PasteCommand implements Command {
private $receiver;
public function __construct(Receiver $receiver) {
$this->receiver = $receiver;
}
public function execute() {
$this->receiver->paste();
}
}