1、背景
當需要向某些物件發送請求,但是不知道請求的接受者是誰,也不知道被請求的操作是哪個,是得請求發送者與請求接受者解耦,
2、模式定義
命令模式(Command Pattern):將一個請求封裝為一個物件,從而使我們可用不同的請求對客戶進行引數化,對請求排隊或者記錄請求日志,以及支持可撤銷的操作,
3、模式結構
命令模式包括如下角色:
- Command:抽象命令類
- ConcreteCommand:具體命令類
- Invoker:呼叫者
- Receiver:接收者
- Client:客戶類
4、優點
- 降低系統的耦合度,
- 新的命令可以很容易的加入到系統中,
- 可以比較容易的設計一個命令佇列和宏命令(組合命令),
- 可以方便的實作對請求的Undo和Redo,
5、缺點
使用命令模式可能會導致某些系統有過多的具體命令雷,由于針對每一個命令都需要設計一個具體命令類,因此某些系統可能需要大量具體命令類,這將影響命令模式的使用,
6、為什么使用命令模式
(1)我們需要Client和Receiver同時開發,而且在開發程序中需要分別不停地重構,改名,
(2)要求有Redo和Undo等功能,
(3)要求命令不按照呼叫順序執行,而是按照執行時的情況排序執行,
(4)在上述情況下,接收者有多個,
撰寫不易,轉載注明出處:https://www.cnblogs.com/lmh15054109/p/14411160.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/260938.html
標籤:設計模式
