1. 程式人生 > >命令模式 - 設計模式 - PHP版

命令模式 - 設計模式 - PHP版

spa rec struct exe foo pre cti public his

 1 <?php
 2 /*
 3  * 命令模式
 4  * 
 5  */
 6 //聲明執行操作的接口(Command接口)
 7 interface Cook {
 8     public function excute();
 9 }
10 //做米飯(ConcreteCommand)
11 class CookRice implements Cook {
12     private $cooker;
13     function __construct(Cooker $cooker) {
14         $this->cooker = $cooker
; 15 } 16 public function excute() { 17 $this->cooker->doRice(); 18 } 19 } 20 //做菜(ConcreteCommand) 21 class CookFood implements Cook { 22 private $cooker; 23 function __construct(Cooker $cooker) { 24 $this->cooker = $cooker; 25 } 26 public
function excute() { 27 $this->cooker->doFood(); 28 } 29 } 30 //服務員(Invoker)(通過List方式,可以進一步優化,這裏略) 31 class ServerPerson { 32 private $cook; 33 public function setCook(Cook $cook) { 34 $this->cook = $cook; 35 } 36 public function ExecuteCommand() {
37 $this->cook->excute(); 38 } 39 } 40 //廚師(Receiver) 41 class Cooker { 42 public function doRice() { 43 echo ‘做飯‘; 44 } 45 public function doFood() { 46 echo ‘做菜‘; 47 } 48 } 49 //客戶端 50 class Client { 51 public static function main() { 52 $cooker = new Cooker(); 53 $server = new ServerPerson(); 54 //做飯 55 $cookA = new CookRice($cooker); 56 $server->setCook($cookA); 57 $server->ExecuteCommand(); 58 //做菜 59 $cookB = new CookFood($cooker); 60 $server->setCook($cookB); 61 $server->ExecuteCommand(); 62 } 63 } 64 Client::main();

命令模式 - 設計模式 - PHP版