天天看點

Java設計模式--指令模式指令模式(别名:動作,事物)Command Pattern(Another name:Action,Transaction)類圖模式的結構與使用簡單的例子運作截圖指令撤銷的例子運作截圖指令模式的優點适用指令模式的情景下載下傳源碼請到

為系統中的一組接口提供一個一緻的界面,facade模式定義了一個高層接口,這個接口使得這一子系統更加容易使用。

encapsulate a request as an object, thereby letting you parameterize clients with different requests, queue or log requests, and support undoable operations.

Java設計模式--指令模式指令模式(别名:動作,事物)Command Pattern(Another name:Action,Transaction)類圖模式的結構與使用簡單的例子運作截圖指令撤銷的例子運作截圖指令模式的優點适用指令模式的情景下載下傳源碼請到

指令模式的結構中包四種角色。

+ 接受者(receiver):接受者是一個類的執行個體,該執行個體負責執行與請求相關的操作。

+ 指令(command):指令是一個接口,規定了用來封裝“請求”的若幹個方法,比如:execute()、undo()等方法。

+ 具體指令(concrete command):具體指令是實作指令接口的類的執行個體。具體指令必須實作接口中的方法,比如execute(),使該方法封裝一個“請求”。

+ 請求者(invoker):請求者是一個包含command接口變量的類的執行個體。請求者中的command接口的變量可以存放任何具體指令的引用。請求者負責調用具體指令,讓具體指令執行那些封裝“請求”的方法,比如execute()方法。

Java設計模式--指令模式指令模式(别名:動作,事物)Command Pattern(Another name:Action,Transaction)類圖模式的結構與使用簡單的例子運作截圖指令撤銷的例子運作截圖指令模式的優點适用指令模式的情景下載下傳源碼請到
Java設計模式--指令模式指令模式(别名:動作,事物)Command Pattern(Another name:Action,Transaction)類圖模式的結構與使用簡單的例子運作截圖指令撤銷的例子運作截圖指令模式的優點适用指令模式的情景下載下傳源碼請到

在指令模式中,請求者(invoker)不直接與接受者(receiver)互動,即請求者(invoker)不包含接受者(receiver)的引用,是以徹底消除了彼此之間的耦合。

指令模式滿足“開-閉原則”。如果增加新的具體指令和該指令的接受者,不必修改調用者的代碼,調用者就可以使用新的指令對象;反之,如果增加新的調用者,不必修改現有的具體指令和接受者,新增加的調用者就可以使用已有的具體指令。

由于請求者的請求被封裝到了具體指令中,那麼就可以将具體指令儲存到持久化的媒介中,在需要的時候,重新執行這個具體指令。是以,使用指令模式可以記錄日志。

使用指令模式可以對請求者的“請求”進行排隊。每個請求都各自對應一個具體指令,是以可以按一定順序執行這些指令。

程式需要在不同的時刻制定、排列和執行請求。

程式需要提供撤銷操作。

程式需要支援宏操作。

<a href="https://github.com/androidwolf">mygithub</a>