PHP 命令模式

<?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(); // 被執行的命令
相關文章
相關標籤/搜索