1.概念:將「請求」(命令/口令)封裝成乙個物件,以便使用不同的請求、佇列或者日誌來引數化其物件。命令模式也支援撤銷操作。命令模式的目的就是達到命令的發出者和執行者之間解耦,實現請求和執行分開。
2.結構圖:
組成成員:
2>、concretecommand(具體命令類):具體命令類是抽象命令類的子類,實現了在抽象命令類中宣告的方法,它對應具體的命令接收者物件,將接收者物件的動作繫結其中。在實現execute()方法時,將呼叫接收者物件的相關操作(operation)。
3>、invoker(命令發起者/訊息請求者):與抽象命令類存在關聯關係,在命令發起時 將乙個具體命令物件注入其中 再呼叫具體命令物件的執行方法(execute) 從而間接實現呼叫請求接收者的相關操作。
3.應用場景:
點餐、遙控器、
4.例項(遙控器)
1、抽象命令類
public inte***ce command public void undo() public void undo() {
tv.off();
3.電器介面類
public void on();
public void off();
4.具體電器類
(1)電視
public void on() {
system.out.println("the tv on");
public void off() {
system.out.println("the tv off");
(2)電燈
public void on() {
system.out.println("the light on");
public void off() {
system.out.println("the light off");
優點:
命令模式把請求乙個操作的物件與知道怎麼執行乙個操作的物件分割開
容易實現撤銷和重做、記錄日誌
命令類容易擴充套件(新增新命令不影響其他類)、修改
缺點:
使用命令模式會導致某些系統有過多的具體命令類。某些系統可能需要幾十個,幾百個甚至幾千個具體命令類,這會使命令模式在這樣的系統裡變得不實際。
Java設計模式 命令模式
命令模式定義 命令模式通過被稱為command的類封裝了對目標物件的呼叫行為以及呼叫引數。將乙個請求封裝稱為乙個命令,從而使你不同的請求對客戶進行引數化 隊請求排隊或記錄請求日誌,以及支援可撤銷的操作。優點 解耦了呼叫者與接受者之間的聯絡。呼叫者呼叫乙個操作,接受者接受請求執行相應的動作,因為使用命...
java設計模式 命令模式
1.概念 將來自客戶端的請求傳入乙個物件,從而使你可用不同的請求對客戶進行引數化。用於 行為請求者 與 行為實現者 解耦,可實現二者之間的松耦合,以便適應變化。分離變化與不變的因素。在物件導向的程式設計中,乙個物件呼叫另乙個物件,一般情況下的呼叫過程是 建立目標物件例項 設定呼叫引數 呼叫目標物件的...
JAVA設計模式 命令模式
命令模式,又稱為行動 action 模式 交易 transaction 模式,是一種行為型設計模式。命令模式的思想是 把乙個請求或者操作封裝到乙個物件中,允許系統使用不同的請求把客戶端引數化,從而實現對請求排隊或者記錄請求日誌 提供命令的撤銷和恢復功等能。命令模式涉及5個角色 結構圖 具體 實現 接...