在軟體構建過程中,「行為請求者"與"行為實現者"通常呈現一種"緊耦合」。但在某些場合-比如需要對行為進行"記錄、撤銷/重(undo/redo)、事務"等處理,這種無法抵禦變化的緊耦合是不合適的。
在這種情況下,如何將"行為請求者"與「行為實現者"解耦?將一組行為抽象為物件,可以實現二者之間的松耦合。
將乙個請求(行為)封裝為乙個物件,從而使你可用不同的請求對客戶進行引數化;對請求排隊或記錄請求日誌,以及支援可撤銷的操作。
#include
#include
#include
using
namespace std;
class
command
;class
concretecommand1
:public command
void
execute
() override
};class
concretecommand2
:public command
void
execute
() override
};class
macrocommand
:public command
void
execute
() override
}};int
main()
優點:降低了系統耦合度。新的命令可以很容易新增到系統中去。
缺點:使用命令模式可能會導致某些系統有過多的具體命令類。
23種設計模式之命令模式
定義 將乙個請求封裝成乙個物件,從而讓你使用不同的請求把客戶端引數化,對請求排隊或者記錄請求日誌,可以提供命令的撤銷和恢復功能。型別 行為類模式 類圖 顧名思義,命令模式就是對命令的封裝,首先來看一下命令模式類圖中的基本結構 以上三個類的作用應該是比較好理解的,下面我們重點說一下invoker類和r...
23種設計模式之 命令模式
定義 將乙個請求封裝成乙個物件,從而讓你使用不同的請求把客戶端引數化,對請求排隊或者記錄請求日誌,可以提供命令的撤銷和恢復功能。型別 行為類模式 類圖 命令模式的結構 顧名思義,命令模式就是對命令的封裝,首先來看一下命令模式類圖中的基本結構 以上三個類的作用應該是比較好理解的,下面我們重點說一下in...
設計模式 23種設計模式
一 軟體設計模式的概念 軟體設計模式 software design pattern 又稱設計模式,是一套被反覆使用 多數人知曉的 經過分類編目的 設計經驗的總結。它描述了在軟體設計過程中的一些不斷重 生的問題,以及該問題的解決方案。也就是說,它是解決特定問題的一系列套路,是前輩們的 設計經驗的總結...