我對命令模式的理解是用乙個命令物件(command),包裝乙個真正需要執行的物件 x(x代表不同物件),而對於要執行x物件的invoker物件來說。它不關x物件是誰,繼承了誰,也不關心要執行這個x物件中的那些方法,因為物件x千萬個,方法更是千萬個,invoker關心不過來。所以invoker想了乙個辦法,我只接收command物件,並且執行command物件中的特定的方法execute。那麼想讓invoker呼叫,x物件就必須把自己包裝成command物件,然後在execute方法中執行想要執行的方法。
**實現:
class commandreceiver
public function actionb()
public function actionc()
}//命令封裝
inte***ce command
class commanda implements command
public function execute()
}class commandb implements command
public function execute()
}class commandc implements command
public function execute()
}//命令呼叫者
class invoker
}$receiver = new commandreceiver(); //命令的具體執行者,不一定是單個具體例項,可以是多個,根據具體情況實現命令封裝即可
$a = new commanda($receiver);
$b = new commandb($receiver);
$c = new commandc($receiver);
$invoker = new invoker();
$invoker->execute($a);
$invoker->execute($b);
$invoker->execute($c);
總結
將動作和接收者包進乙個物件中,這個物件只暴露乙個execute()方法。當此方法被呼叫時,接受者就會進行這些動作。從外面來看,其他物件不知道究竟哪個接收者進行了那些動作,只知道呼叫execute()方法就能達到目的
設計模式學習筆記 命令模式
定義 將乙個請求封裝成物件,從而讓你使用不同的請求把客戶端引數化,對請求排隊或者記錄請求的日誌,可以提供命令的撤銷和恢復功能。通用類圖如下 通用 如下 命令接受者 public abstract class receiver public class concretereceiver1 extend...
《設計模式》學習筆記 命令模式
命令模式 command pattern 是一種資料驅動的設計模式,它屬於行為型模式。請求以命令的形式包裹在物件中,並傳給呼叫物件。呼叫物件尋找可以處理該命令的合適的物件,並把該命令傳給相應的物件,該物件執行命令。意圖 將乙個請求封裝成乙個物件,從而使您可以用不同的請求對客戶進行引數化。主要解決 在...
學習筆記 Java設計模式 命令模式
最近做開發發現自己 邏輯混亂,覺得有必要重溫下設計模式。於是就翻到了終點大神的部落格在這裡記錄下自己的學習後的理解。命令模式 命令模式的主要目的,用官話來說,是將呼叫者與執行者解耦。將 結構劃分為呼叫者 命令 執行者三個部分。其中,執行者作為命令的屬性被設定,因此,也可以理解為呼叫者 命令 執行者 ...