JAVA設計模式——命令模式

2019-08-09 09:22 | 達峰網

 

JAVA設計模式--命令模式

目錄

一、什么是命令式

二、命令模式的適用性

三、命令模式的結構

四、命令模式的優點

五、認識命令模式

六、總結

一、什么是命令式

命令(Command)模式又叫作動作(Action)模式或事務(Transaction)模式,是一種對象的行為模式。將一個請求封裝為一個對象,從而使你可用不同的請求對客戶進行參數化;對請求排隊或記錄請求日志,以及支持可撤消的操作。

命令模式的本質:封裝請求

設計意圖:命令模式通過將請求封裝到一個命令(Command)對象中,實現了請求調用者和具體實現者之間的解耦。

二、命令模式的適用性

在以下條件下可以考慮使用命令模式:

• 如果需要抽象出需要執行的動作,并參數化這些對象,可以選用命令模式。將這些需要執行的動作抽象成為命令,然后實現命令的參數化配置。

• 如果需要在不同的時刻指定、排列和執行請求,可以選用命令模式。將這些請求封裝成為命令對象,然后實現將請求隊列化。

• 如果需要支持取消操作,可以選用命令模式,通過管理命令對象,能很容易地實現命令的恢復和重做功能。

• 如果需要支持當系統崩潰時,能將系統的操作功能重新執行一遍,可以選用命令模式。將這些操作功能的請求封裝成命令對象,然后實現日志命令,就可以在系統恢復以后,通過日志獲取命令列表,從而重新執行一遍功能。

• 在需要事務的系統中,可以選用命令模式。命令模式提供了對事務進行建模的方法。命令模式有一個別名就是Transaction。

三、命令模式的結構

 

 

命令模式涉及的角色及其職責如下:

抽象命令(Command)角色:一般定義為接口,用來定義執行命令的接口。

具體命令(ConcreteCommand)角色:通常會持有接收者對象,并調用接收者對象的相應功能來完成命令要執行的操作。

接收者(Receiver)角色:真正執行命令的對象。任何類都可能成為接收者,只要它能夠實現命令要求實現的相應功能。

調用者(Invoker)角色:要求命令對象執行請求,通常會持有命令對象,可以持有很多的命令對象。這個是客戶端真正觸發命令并要求命令執行相應操作的地方,也就是說相當于使用命令對象的入口。

客戶端(Client)角色:創建具體的命令對象,并且設置命令對象的接收者。

命令模式結構示意源代碼如下:

先來看看抽象命令接口的定義。示例代碼如下:

熱門文章
圖文推薦
最新推薦
編輯郵箱:[email protected] | xml地圖 | 達峰網移動端
鄭重聲明:達峰網網站資源摘自互聯網,如有侵權,麻煩通知刪除,謝謝!
11选5任3口诀