<?php /** * 命令模式 * 须要执行的命令(生成对象) * 抽象接收命令行的类 * 具体接收类集成抽象接收类 * 具体执行类执行接收类 */ /** * Class Goods * 被执行的命令 */ class Goods { public function GetGood() { echo '被执行的命令'.PHP_EOL; } } /** * Class ACommand * 抽象命令类 */ abstract class ACommand { protected $_ACommand; public function __construct($goods) { $this->_ACommand = $goods; } abstract public function run (); } /** * Class Command * 具体命令类 */ class Command extends ACommand { function __construct(Goods $goods) { parent::__construct($goods); } public function run() { // TODO: Implement run() method. $this->_ACommand->GetGood(); } } /** * Class Go * 具体执行命令类 */ class Go { protected $go; function __construct(Command $command) { $this->go = $command; } public function run () { $this->go->run(); } } $go = new Go(new Command(new Goods())); $go->run(); // 被执行的命令