設計模式(12)命令模式--行爲型

定義

將一個請求封裝爲一個對象,從而使你可用不同的請求對客戶進行參數化;對請求排隊或記錄請求日誌,以及支持可撤銷的操作。
 ①封裝請求:抽象出需要執行的動作,封裝成對象(有統一的接口)。
 ②參數化:可以用不同的命令對象,去參數化配置客戶的請求。(即,將命令對象作爲參數去供Invoker調用)。

角色

調用者(Invoker)

要求命令對象執行請求,通常會持有命令對象,可以持有很多的命令對象。這個是客戶端真正觸發命令並要求命令執行相應操作的地方,也就是說相當於使用命令對象的入口。

接收者(Receiver)

真正執行命令的對象。任何類都可能成爲一個接收者,只要它能夠實現命令要求實現的相應功能。

命令類(Command)

定義命令的接口,聲明執行的方法

具體命令類(ConcreteCommand)

是“虛”的實現,通常會持有接收者並調用接收者的功能來完成命令要執行的操作。

類圖

示例

要點

(1)需要抽象出執行的動作,並參數化這些對象時可選用命令模式
(2)需要不同的時刻指定、排列和執行請求,可將請求封裝成爲命令對象,然後實現將請求隊列化。
(3)需要支持取消操作,可通過管理命令對象,能很容易實現命令的恢復和重做功能。
(4)在需要事務的系統中,可選用命令模式,它提供了對事務進行建模的方法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章