命令模式将一个请求封装为一个对象从而你可用不同的请求对客户进行参数化对请求排队或记录请求日志以及支持可撤销操作
命令类
命令角色声明了一个给所有具体命令类的抽象接口这是一个抽象角色
具体命令角色定义一个接受者和行为之间的弱耦合实现execute方法负责调用接受的相应操作execute()方法通常叫做执行方法
客户角色创建一个具体命令对象并确定其接受者
请求者角色负责调用命令对象执行请求相关的方法叫做行动方法
接受者角色负责具体实施和执行一个请求
作用
抽象出待执行的动作以参数化对象
在不同的时刻指定排列和执行请求
支持取消操作
支持修改日志
代码如下:
<?php
//命令接口
interface Command{
public function execute();
}
//具体命令
class ConcreteCommand implements Command{
private $_receiver;
public function __construct($receiver){
$this
>_receiver = $receiver;
}
public function execute(){
$this
>_receiver
>action();
}
}
//接受者
class Receiver{
private $_name;
public function __construct($name){
$this
>_name = $name;
}
//行动方法
public function action(){
echo $this
>_name
do action
<br/>
;
}
}
//请求者
class Invoker{
private $_command;
public function __construct($command){
$this
>_command = $command;
}
public function action(){
$this
>_command
>execute();
}
}
//客户端
class Client{
public static function main(){
$receiver = new Receiver(
jaky
);
$command = new ConcreteeCommand($receiver);
$invoker = new Invoker($command);
$invoker
>action();
}
}
Client::main();
?>