




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
命令模式封裝調用一個例子publicvoidactionPerformed(ActionEvente){ Objectobj=e.getSource(); if(obj==mnuOpen)fileOpen();//openfile if(obj==mnuExit)exitClicked();//exitfromprogram if(obj==btnRed)redClicked();//turnred}privatevoidexitClicked(){System.exit(0);}privatevoidfileOpen(){ FileDialogfDlg=newFileDialog(this,"Openafile",FileDialog.LOAD); fDlg.show();}privatevoidredClicked(){ p.setBackground(Color.red);}上述程序設計,當按鈕和菜單項不多的時候工作良好,但按鈕和菜單項多時,就不好辦了。publicinterfaceCommand{ publicvoidExecute();}publicvoidactionPerformed(ActionEvente){ Commandcmd=(Command)e.getSource(); cmd.Execute();}這樣,我們需要給每一個對象提供一個執行的方法。命令模式theseprogramobjectsshouldbecompletelyseparatefromeachotherandshouldnothavetoknowhowotherobjectswork.TheuserinterfacereceivesacommandandtellsaCommandobjecttocarryoutwhateverdutiesithasbeeninstructedtodo.TheUIdoesnotandshouldnotneedtoknowwhattaskswillbeexecuted.命令模式程序對象應該徹底的彼此解耦,不需要知道其他的對象是如何工作的。用戶界面接收到命令然后告訴命令對象執行設定的工作,用戶界面不知道也不應該知道命令是如何執行的。命令的發送者命令的接受者命令對象解耦了命令的發送者和命令的接受者飯店用餐顧客點了飯菜,形成一個訂單,侍者將訂單交給廚房,廚房根據訂單配菜。侍者無需知道訂單的內容。飯菜的制作者和飯菜的消費者完全分開,彼此無需直接聯系。遙控器的例子遙控器需要控制每一個電器的動作,如電燈,電扇,電視機,同是開,動作不一樣。我們設置命令接口
publicinterfaceCommand{publicvoidexecute();}publicclassLightOnCommandimplementsCommand{ Lightlight; publicLightOnCommand(Lightlight){ this.light=light; } publicvoidexecute(){ light.on(); }}命令的接收對象命令接收對象自己執行命令對象接收對象實現了命令接口execute(){receive.action();}
接受者CommandpublicclassSimpleRemoteControl{ Commandslot; publicSimpleRemoteControl(){}
publicvoidsetCommand(Commandcommand){ slot=command; }publicvoidbuttonWasPressed(){ slot.execute(); }}遙控器測試publicclassRemoteControlTest{ publicstaticvoidmain(String[]args){ SimpleRemoteControlremote=newSimpleRemoteControl(); Lightlight=newLight(); LightOnCommandlightOn=newLightOnCommand(light); remote.setCommand(lightOn); remote.buttonWasPressed(); }}命令模式將請求封裝成對象,使用不同的請求、隊列或日志來參數化其他對象。命令模式支持可撤銷操作。將請求封裝成對象,什么對象?對象將接受者和動作包在內部,只有一個execute接口,外部調用這個接口,不知會進行什么樣的操作。多功能遙控器需要控制多個設備,每一個設備都有開關按鈕需要一個命令組,來控制設備組:起居室燈,廚房燈,吊扇,車庫門,音響,等publicclassRemoteControl{ Command[]onCommands; Command[]offCommands;
publicRemoteControl(){ onCommands=newCommand[7]; offCommands=newCommand[7];
CommandnoCommand=newNoCommand(); for(inti=0;i<7;i++){ onCommands[i]=noCommand; offCommands[i]=noCommand; } }
publicvoidsetCommand(intslot,CommandonCommand,CommandoffCommand){ onCommands[slot]=onCommand; offCommands[slot]=offCommand; }publicvoidonButtonWasPushed(intslot){ onCommands[slot].execute(); } publicvoidoffButtonWasPushed(intslot){ offCommands[slot].execute(); }publicclassLightOffCommandimplementsCommand{
??
}NoCommand它是一個空對象,稱監視對象,避免了判斷
if(onCommand[slot]!=null)onCommand[slot].execute();撤銷命令有時應該允許后悔,允許命令撤銷。publicinterfaceCommand{ publicvoidexecute(); publicvoidundo();}publicclassLightOffCommandimplementsCommand{ Lightlight;
publicLightOffCommand(Lightlight){ this.light=light; }
publicvoidexecute(){ light.off(); }
publicvoidundo(){ light.on(); }}使用撤銷命令的遙控器代碼測試代碼使用狀態實現撤銷吊扇代碼加入撤銷到吊扇的命令類代碼其它幾個low,medium,off.如何實現。測試吊扇類代碼遙控器的party模式產生一個新的命令,可以讓所有設備打開。publicclassMacroCommandimplementsCommand{ Command[]commands; publicMacroCommand(Command[]commands){ mands=commands; } publicvoidexecute(){ for(inti=0;i<commands.length;i++){ commands[i].execute(); } } publicvoidundo(){ for(inti=0;i<commands.length;i++){ commands
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 網絡編輯師考試模擬考題及答案
- 股票投資的風險分析與控制試題及答案
- 2025年國際金融理財師復習心得分享試題及答案
- 畜牧師職稱考試組織策略試題及答案
- 畜牧師職業生涯規劃的考試試題及答案
- 2025年銀行從業資格證考試知識要訣試題及答案
- 銀行從業資格證的服務理念試題及答案
- 2025年高速精密平板切紙機項目發展計劃
- 第23課《馬說》教學設計2023-2024學年統編版語文八年級下冊
- 2025年PM10自動采樣器及測定儀合作協議書
- 土木工程畢業設計計算書(含建筑設計+結構設計+設計圖紙)
- 織碼匠文字材料語言大綱目錄
- 2023年河南應用技術職業學院單招職業適應性測試題庫及答案解析
- GB/T 28758-2012起重機檢查人員的資格要求
- 第20課《一滴水經過麗江》課件(共40張PPT)-部編版語文八年級下冊
- 招商銀行入職培訓招商銀行新員工試題
- 威海職業學院學籍檔案簿
- 蘇教版二年級數學下冊《第2單元 練習二》教學課件PPT小學公開課
- 長期購銷合作協議書參考
- 入團志愿書(2016版本)(可編輯打印標準A4) (1)
- 警棍盾牌術基本動作
評論
0/150
提交評論