深入淺出設計模式之命令模式.ppt
《深入淺出設計模式之命令模式.ppt》由會員分享,可在線閱讀,更多相關《深入淺出設計模式之命令模式.ppt(31頁珍藏版)》請在裝配圖網上搜索。
命令模式 封裝調用 一個例子 publicvoidactionPerformed ActionEvente Objectobj e getSource if obj mnuOpen fileOpen openfileif obj mnuExit exitClicked exitfromprogramif 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 這樣 我們需要給每一個對象提供一個執(zhí)行的方法 命令模式 theseprogramobjectsshouldbecompletelyseparatefromeachotherandshouldnothavetoknowhowotherobjectswork TheuserinterfacereceivesacommandandtellsaCommandobjecttocarryoutwhateverdutiesithasbeeninstructedtodo TheUIdoesnotandshouldnotneedtoknowwhattaskswillbeexecuted 命令模式 程序對象應該徹底的彼此解耦 不需要知道其他的對象是如何工作的 用戶界面接收到命令然后告訴命令對象執(zhí)行設定的工作 用戶界面不知道也不應該知道命令是如何執(zhí)行的 命令的發(fā)送者 命令的接受者 命令對象 解耦了命令的發(fā)送者和命令的接受者 飯店用餐 顧客點了飯菜 形成一個訂單 侍者將訂單交給廚房 廚房根據訂單配菜 侍者無需知道訂單的內容 飯菜的制作者和飯菜的消費者完全分開 彼此無需直接聯(lián)系 遙控器的例子 遙控器需要控制每一個電器的動作 如電燈 電扇 電視機 同是開 動作不一樣 我們設置命令接口publicinterfaceCommand publicvoidexecute publicclassLightOnCommandimplementsCommand Lightlight publicLightOnCommand Lightlight this light light publicvoidexecute light on 命令的接收對象 命令接收對象自己執(zhí)行 命令對象 接收對象實現(xiàn)了命令接口 Command publicclassSimpleRemoteControl 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 它是一個空對象 稱監(jiān)視對象 避免了判斷if onCommand slot null onCommand slot execute 撤銷命令 有時應該允許后悔 允許命令撤銷 publicinterfaceCommand publicvoidexecute publicvoidundo publicclassLightOffCommandimplementsCommand Lightlight publicLightOffCommand Lightlight this light light publicvoidexecute light off publicvoidundo light on 使用撤銷命令的遙控器 代碼 測試 代碼 使用狀態(tài)實現(xiàn)撤銷 吊扇代碼 加入撤銷到吊扇的命令類 代碼其它幾個low medium off 如何實現(xiàn) 測試吊扇類 代碼 遙控器的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 i undo 測試宏命令 代碼 命令模式的優(yōu)點和缺點 優(yōu)點 降低Client和命令接受者的耦合 是命令請求和命令執(zhí)行的對象分割便于修改和擴張便于聚合多個命令缺點 造成出現(xiàn)過多的具體命令類 太多文件 命令模式 將命令發(fā)送者和命令解釋者解耦兩者的聯(lián)系通過命令對象來中介的命令對象包含接受者和execute方法命令可以被撤銷宏命令是一種簡單的命令- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設計者僅對作品中獨創(chuàng)性部分享有著作權。
- 關 鍵 詞:
- 深入淺出 設計 模式 命令
裝配圖網所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
鏈接地址:http://www.hcyjhs8.com/p-5948119.html