<?php
require 'Light.php';
class LightA extends Light {
public function __construct () {
print_r("create a lightA ");
}
public function on () {
print_r('lightA is on');
}
}
<?php
abstract class Light {
public abstract function on ();
}
<?php
interface CommandInterface {
public function execute();
}
<?php
require_once 'CommandInterface.php';
class LightOnCommand implements CommandInterface {
private $light = "";
public function __construct (Light $light) {
$this->light = $light;
}
public function execute () {
$this->light->on();
}
}
<?php
require_once 'CommandInterface.php';
class SimpleRemoteControl{
private $command = "";
public function __construct () {
print_r("remote control!");
}
public function setCommand (CommandInterface $command) {
$this->command = $command;
}
public function buttonWasPressed () {
$this->command->execute();
}
}
<?php
require 'LightOnCommand.php';
require 'SimpleRemoteControl.php';
require 'LightA.php';
$lightA = new LightA();
$command = new LightOnCommand($lightA);
$control = new SimpleRemoteControl();
$control->setCommand($command);
$control->buttonWasPressed();
说明: 命令模式 就是将请求封装成对象,以便使用不同的请求,队列或者日志来参数化其他对象,命令模式也支持可撤销的操作。