天天看點

Java設計模式—指令模式

指令模式是一個高内聚的模式。

定義如下:将一個請求封裝成一個對象,進而讓你使用不同的請求把用戶端參數化,對請求排隊或者記錄請求日志,可以提供指令的撤銷和恢複功能。

通用類圖如下:

Java設計模式—指令模式

角色說明:

● receive接收者角色

該角色就是幹活的角色,指令傳遞到這裡是應該被執行的。

● command指令角色

需要執行的所有指令都在這裡聲明。

● invoker調用者角色

接收到指令,并執行指令。在例子中,我(項目經理)就是這個角色。

通用源代碼如下:

指令模式的優點:

● 類間解耦

調用者角色與接收者角色之間沒有任何依賴關系,調用者實作功能時隻需調用command抽象類的execute方法就可以,不需要了解到底是哪個接收者執行。

● 可擴充性

command的子類可以非常容易地擴充,而調用者invoker和高層次的子產品client不産生嚴重的代碼耦合。

● 指令模式結合其他模式會更優秀

指令模式可以結合責任鍊模式,實作指令族解析任務;結合模闆方法模式,則可以減少

command子類的膨脹問題。

缺點:command的子類會産生膨脹的問題。

繼續閱讀