public static function main() { $receiver = new Receiver("John"); $command = new ConcreteCommand($receiver); $invoker = new Invoker($command); $invoker->action(); $receiver = null; $command = null; $invoker = null; }
public static function main() { $receiver = new Receiver('phpppan'); $pasteCommand = new PasteCommand($receiver); $copyCommand = new CopyCommand($receiver); $macroCommand = new DemoMacroCommand(); $macroCommand->add($copyCommand); $macroCommand->add($pasteCommand); $invoker = new Invoker($macroCommand); $invoker->action(); $macroCommand->remove($copyCommand); $invoker = new Invoker($macroCommand); $invoker->action(); }
class Invoker { private $command; public function __construct(Command $command) { $this->command = $command; } public function action() { $this->command->execute(); } public function unaction() { $this->command->undo(); } } //生产接受者 $Reciver2 = new Reciver2(); $Reciver1 = new Reciver1(); //建立接受者和command之间关系 $command1 = new Command1($Reciver1); $command2 = new Command1($Reciver2); //生产调度者 $invoker1 = new Invoker($command1); $invoker2 = new Invoker($command2); //使用调度者 $invoker1->action(); $invoker1->unaction(); //使用调度者 $invoker2->action(); $invoker2->unaction();
class Receiver { // 接收者角色 private $_name; public function __construct($name) { $this->_name = $name; } public function action() { echo 'receive some cmd:' . $this->_name; } } class Invoker { // 请求者角色 private $_command; public function __construct(Command $command) { $this->_command = $command; } public function action() { $this->_command->execute(); } } $receiver = new Receiver('hello world'); $command = new ConcreteCommand($receiver); $invoker = new Invoker($command); $invoker->action();
public function testInvoker() { $command = new AddRequirementCommand(); $invoker = new Invoker($command); $invoker->action(); }