<?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(); // 被執行的命令