命令模式(command pattern)是一種資料驅動的設計模式,它屬於行為型模式。
理論介紹
命令模式將請求封裝成物件,以便使用不同的請求、佇列或者日誌來引數化其他物件。命令模式也支援可撤銷的操作。
請求以命令的形式包裹在物件中,並傳給呼叫物件。呼叫物件尋找可以處理該命令的合適的物件,並把該命令傳給相應的物件,該物件執行命令。
應用場景
在某些場合,比如要對行為進行"記錄、撤銷 or 重做、事務"等處理,這種無法抵禦變化的緊耦合是不合適的。在這種情況下,如何將"行為請求者"與"行為實現者"解耦?將一組行為抽象為物件,可以實現二者之間的松耦合。
**實現參考
1.實現命令介面
package command_pattern;
/** * 命令介面
*/public inte***ce command
2.實現乙個開啟電燈的開關
package command_pattern;
/** * 實現乙個開啟電燈的命令
* 將請求封裝成物件
*/public class lightoncommand implements command
@override
public void execute()
}
3.實現乙個關閉電燈的命令
package command_pattern;
/** * 實現乙個關閉電燈的命令
* 將請求封裝成物件
*/public class lightoffcommand implements command
@override
public void execute()
}
4.實現遙控器
package command_pattern;
public class remotecontrol
}public void setcommand(int slot, command oncommand, command offcommand)
public void onbuttonwaspushed(int slot)
}public void offbuttonwaspushed(int slot)
public string tostring()
return stringbuffer.tostring();
}}
5.模擬測試遙控器
package command_pattern;
/** * 模擬命令模式的客戶
*/public class remotecontroltest
}
補充
缺點 祝進步
設計模式 命令設計模式
一句話總結 命令設計模式的實質是將命令定義,命令的執行分離開,從而提公升了系統的解藕性 結構 命令的抽象command 命令的具體實現concretecommand 命令處理者抽象ireceiver 命令處理者的具體實現concretereceiver 命令的呼叫者invoker 客戶端client...
設計模式 命令模式
1 命令模式的角色組成 1 命令角色 command 生命執行操作的介面。介面或抽象類來實現。2 具體命令角色 concrete command 將乙個接收者物件繫結於乙個動作 呼叫接收者相應的操作,以實現命令角色宣告的執行操作的介面。3 客戶角色 client 建立乙個具體命令物件 並可以設定它的...
設計模式 命令模式
1 command.h ifndef command h define command h include include include using namespace std class chef 廚師,具體命令的執行者 class command 命令基類 class makemuttonco...