[設計模式] 指令模式
指令模式實作
簡單指令
批量指令
簡單撤銷
宏指令
标準撤銷方式
總結
更多
手機使用者請<code>橫屏</code>擷取最佳閱讀體驗,<code>REFERENCES</code>中是本文參考的連結,如需要連結和更多資源,可以關注其他部落格釋出位址。
平台
位址
CSDN
https://blog.csdn.net/sinat_28690417
簡書
https://www.jianshu.com/u/3032cc862300
個人部落格
https://yiyuery.github.io/NoteBooks/
指令模式 将請求封裝成對象,這可以讓你使用不同的請求、隊列或者是日志請求來參數化其他對象。指令模式一般支援定義撤銷操作。
首先來讓我們實作一個能開燈的遙控指令場景。

定義一個開燈的指令接口實作:
定義一個遙控器:
<code>Ex.1</code>
如果是需要一組指令的執行呢?
<code>補充定義</code>一個指令<code>NoCommand</code>,用于預設指令的資訊列印。
<code>Ex.2</code>
定義兩組指令,每次在執行開啟操作前将對應的關閉操作寫入緩存變量,在執行撤銷方法時,執行即可。
<code>Ex.3</code>
定義一組指令的執行,類似于 MicroSoft 常用的宏定義函數一樣
假定我們定義一個宏指令實作回家後的一個智能操作:包含開燈和開電視,并要求它支援撤銷能力。
<code>Ex.4</code>
針對于指令場景的撤銷操作,其實我們可以直接定義一個<code>undo</code>操作接口在<code>Command</code>中,此處考慮到示範的代碼結構,我們在補充一個接口繼承<code>Command</code>來實作
對應的undo方式執行也調整下實作:
<code>Ex.5</code>
模式特點
将送出請求的對象和執行的對象解耦
被解耦的兩者之間是通過指令對象之間進行溝通的,指令對象封裝了接受者和一個/組動作
調用者通過調用指令對象的<code>execute</code>送出請求,後者根據這個進行響應
調用者可以接受指令當做傳入的參數,甚至在運作時動态地進行
指令還支援撤銷操作的定義,做法是實作一個<code>undo</code>方法來回到<code>execute</code>被執行前的狀态
宏指令是指令的一種簡單延伸,允許調用多個指令
敲黑闆 !!!!
指令模式緻力于發送請求和執行請求的對象解耦操作!
掃碼關注<code>架構探險之道</code>,回複文章标題,擷取本文相關源碼和資源連結
知識星球(掃碼加入擷取曆史源碼和文章資源連結)