設計模式 命令模式

2021-09-19 11:23:31 字數 1433 閱讀 3939

命令模式(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...