設計模式 命令模式

2021-08-14 13:58:52 字數 1233 閱讀 8935

1.定義:

「行為請求者

」與「行為實現者(接收者)

」通常呈現一種「

緊耦合」。但在

某些場合,比如要對行為進行「記錄、撤銷/重做、事務」等處理,這種無法抵禦變化的緊耦合是不合適的。在這種情況下,如何將「行為請求者」與「行為實現者」解耦?將

一組行為抽象為物件

,實現二者之間的松耦合

。這就是

命令模式(command pattern)

命令模式的本質是

對命令進行封裝,將發出命令的責任和執行命令的責任分割開;

請求的一方不必知道接收請求的一方的介面。

2.使用場景和優勢

能夠較容易設計乙個命令佇列;

容易將命令計入日誌,允許接收者決定是否執行;

容易實現命令的撤銷和重複;

容易修改命令,新加命令和組合命令,符合單一職責(如何看出是否符合單一原則,修改部分**時,是否要修改很多**);

降低命令傳送者(請求者)和命令接收者(實現者)的耦合。

3.實現步驟:

1. client建立乙個concretecommand物件並指定他的receiver物件

2. 某個invoker物件儲存該concretecommand物件

3. 該invoker通過呼叫command物件的execute操作來提交乙個請求。若該命令是可撤銷的,concretecommand就在執行execute操作之前儲存當前狀態以用於取消該命令

4. concretecommand物件對呼叫它的receiver的一些操作以執行該請求

4.ps:

不要給**新增基於猜測,實際不需要的功能,可以用到了再加。

1. client建立乙個concretecommand物件並指定他的receiver物件

2. 某個invoker物件儲存該concretecommand物件

3. 該invoker通過呼叫command物件的execute操作來提交乙個請求。若該命令是可撤銷的,concretecommand就在執行execute操作之前儲存當前狀態以用於取消該命令

4. concretecommand物件對呼叫它的receiver的一些操作以執行該請求

設計模式 命令設計模式

一句話總結 命令設計模式的實質是將命令定義,命令的執行分離開,從而提公升了系統的解藕性 結構 命令的抽象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...