PHP設計模式(4)命令鏈模式

來源:互聯網
上載者:User

命令鏈 模式以鬆散耦合主題為基礎,發送訊息、命令和請求,或通過一組處理常式發送任意內容。每個處理常式都會自行判斷自己能否處理請求。如果可以,該請求被處理,進程停止。您可以為系統添加或移除處理常式,而不影響其他處理常式。

以下代碼顯示了此模式的一個樣本。

<?php//定義命令介面interface ICommand {function onCommand($name,$args);}//定義維護命令對象列表的類class CommandChain {//定義對象列表數組private $_commands = array();//定義添加命令方法public function addCommand($cmd){$this->_commands[] = $cmd;}//定義執行命令的方法public function runCommand($name,$args){foreach($this->_commands as $cmd) {if($cmd->onCommand($name,$args)){return;}}}}//定義一個添加使用者的命令對象class UserCommand implements ICommand {public function onCommand($name,$args){if($name != 'addUser'){return false;}echo 'UserCommand run command addUser<br>';}}//定義一個發送郵件的命令對象class MailCommand implements ICommand {public function onCommand($name,$args){if($name != 'mail'){return false;}echo 'MailCommand run command mail<br>';}}//定義維護命令對象列表的類$commandChain = new CommandChain();//執行個體化命令對象$user = new UserCommand();$mail = new MailCommand();//添加命令對象到列表中$commandChain->addCommand($user);$commandChain->addCommand($mail);//執行命令$commandChain->runCommand('addUser',null);$commandChain->runCommand('mail',null);

此代碼定義維護 ICommand 對象列表的 CommandChain 類。兩個類都可以實現 ICommand 介面 —— 一個對郵件的請求作出響應,另一個對添加使用者作出響應。

如果您運行包含某些測試代碼的指令碼,則會得到以下輸出:

650) this.width=650;" title="QQ20131221213650.png" src="http://www.bkjia.com/uploads/allimg/131229/1215164956-0.png" alt="213621694.png" />

代碼首先建立 CommandChain 對象,並為它添加兩個命令對象的執行個體。然後運行兩個命令以查看誰對這些命令作出了響應。如果命令的名稱不匹配 UserCommand 或 MailCommand,則代碼失敗,不發生任何操作。

為處理請求而建立可擴充的架構時,命令鏈模式很有價值,使用它可以解決許多問題。

 

 

 

 

 

本文出自 “phper-每天一點點~” 部落格,請務必保留此出處http://janephp.blog.51cto.com/4439680/1343599

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.