在一些需求場景中,有發出命令的物件,有執行命令的物件,有具體的命令。但是如果要將這些模型抽象出來可以復用,這就是常見的命令模式。
命令模式中的5個角色
(1)呼叫者:負責呼叫命令物件,執行命令物件的方法
(2)執行者:具體執行某一方法
(3)抽象命令:乙個介面或抽象類,讓具體命令實現
(4)具體命令:實現抽象命令的具體方法
(5)客戶端:建立具體的命令物件和其接受者,並執行請求
比如我現在在鍵盤上打字輸入文字,我的角色就是客戶端,鍵盤就是呼叫者,而電腦就是執行者,我在鍵盤上輸入新增,撤銷,恢復命令。就會在電腦上同步顯示出來。整個過程就是命令模式。
比如領導命令下屬列印乙份放假檔案,領導就是呼叫者,下屬就是執行者,列印乙份檔案就是抽象命令,列印具體的放假命令就是具體的命令。在這個命令模式中,領導不關心具體是哪個下屬去列印,下屬也不知道給哪位領導在列印,他能列印很多檔案,當前這一刻他只列印乙份放假的檔案。這樣耦合度更低。
(1)呼叫者invoker
public class invoker
// 設值注入
public void setcommand(command command)
// 業務方法,用於呼叫命令類
public void call()
}
(2)執行者receiver
public class receiver
}
(3)抽象命令command
public abstract class command
(4)具體命令
新增concretecommandadd
public class concretecommandadd extends command
@override
public void execute()
}
恢復concretecommandredo
public class concretecommandredo extends command
@override
public void execute()
}
撤銷concretecommandundo
public class concretecommandundo extends command
@override
public void execute()
}
(5)客戶端test
public class test
}
執行結果:
add action
redo action
undo action
Java設計模式 命令模式
命令模式定義 命令模式通過被稱為command的類封裝了對目標物件的呼叫行為以及呼叫引數。將乙個請求封裝稱為乙個命令,從而使你不同的請求對客戶進行引數化 隊請求排隊或記錄請求日誌,以及支援可撤銷的操作。優點 解耦了呼叫者與接受者之間的聯絡。呼叫者呼叫乙個操作,接受者接受請求執行相應的動作,因為使用命...
java設計模式 命令模式
1.概念 將來自客戶端的請求傳入乙個物件,從而使你可用不同的請求對客戶進行引數化。用於 行為請求者 與 行為實現者 解耦,可實現二者之間的松耦合,以便適應變化。分離變化與不變的因素。在物件導向的程式設計中,乙個物件呼叫另乙個物件,一般情況下的呼叫過程是 建立目標物件例項 設定呼叫引數 呼叫目標物件的...
JAVA設計模式 命令模式
命令模式,又稱為行動 action 模式 交易 transaction 模式,是一種行為型設計模式。命令模式的思想是 把乙個請求或者操作封裝到乙個物件中,允許系統使用不同的請求把客戶端引數化,從而實現對請求排隊或者記錄請求日誌 提供命令的撤銷和恢復功等能。命令模式涉及5個角色 結構圖 具體 實現 接...