Java以命令模式設計模式_第1頁
Java以命令模式設計模式_第2頁
Java以命令模式設計模式_第3頁
Java以命令模式設計模式_第4頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第Java以命令模式設計模式目錄Java以命令模式設計模式1、簡單介紹2、命令模式

Java以命令模式設計模式

1、簡單介紹

意圖:

將一個請求封裝成一個對象,從而使您可以用不同的請求對客戶進行參數(shù)化。

主要解決:

在軟件系統(tǒng)中,行為請求者與行為實現(xiàn)者通常是一種緊耦合的關系,但某些場合,比如需要對行為進行記錄、撤銷或重做、事務等處理時,這種無法抵御變化的緊耦合的設計就不太合適。

何時使用:

在某些場合,比如要對行為進行"記錄、撤銷/重做、事務"等處理,這種無法抵御變化的緊耦合是不合適的。在這種情況下,如何將"行為請求者"與"行為實現(xiàn)者"解耦?將一組行為抽象為對象,可以實現(xiàn)二者之間的松耦合。

如何解決:

通過調用者調用接受者執(zhí)行命令,執(zhí)行順序:調用者→接受者→命令。

關鍵代碼:定義三個角色

received真正的命令執(zhí)行對象

Command

invoker使用命令對象的入口

應用實例:

struts1中的action核心控制器ActionServlet只有一個,相當于Invoker,而模型層的類會隨著不同的應用有不同的模型類,相當于具體的Command。

優(yōu)點:

降低了系統(tǒng)耦合度。

新的命令可以很容易添加到系統(tǒng)中去。

缺點:

使用命令模式可能會導致某些系統(tǒng)有過多的具體命令類。

使用場景:

認為是命令的地方都可以使用命令模式,比如:

GUI中每一個按鈕都是一條命令。

模擬CMD。

注意事項:

系統(tǒng)需要支持命令的撤銷(Undo)操作和恢復(Redo)操作,也可以考慮使用命令模式,見命令模式的擴展。

2、命令模式

命令模式很好理解,舉個例子,司令員下令讓士兵去干件事情,從整個事情的角度來考慮,司令員的作用是,發(fā)出口令,口令經過傳遞,傳到了士兵耳朵里,士兵去執(zhí)行。這個過程好在,三者相互解耦,任何一方都不用去依賴其他人,只需要做好自己的事兒就行,司令員要的是結果,不會去關注到底士兵是怎么實現(xiàn)的。我們看看關系圖:

Invoker是調用者(司令員),Receiver是被調用者(士兵),MyCommand是命令,實現(xiàn)了Command接口,持有接收對象,

實現(xiàn)代碼:

publicinterfaceCommand{

publicvoidexe();

publicclassMyCommandimplementsCommand{

privateReceiverreceiver;

publicMyCommand(Receiverreceiver){

this.receiver=receiver;

@Override

publicvoidexe(){

receiver.action();

publicclassReceiver{

publicvoidaction(){

System.out.println("commandreceived!");

publicclassInvoker{

privateCommandcommand;

publicInvoker(Commandcommand){

mand=command;

publicvoidaction(){

command.exe();

publicclassTest{

publicstaticvoidmain(String[]args){

Receiverreceiver=newReceiver();

Commandcmd=newMyCommand(receiver);

Invokerinvoker=newInvoker(cmd);

invoker.action();

這個很哈

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論