命令模式的優點 設計模式之命令模式

2021-10-18 04:36:31 字數 1307 閱讀 2960

命令模式(command pattern):將乙個請求封裝成乙個物件,從而讓你使用不同的請求把客戶端引數化,對請求排隊或者記錄請求日誌,可以提供靈敏的撤銷和恢復公共能。

命令模式的類圖如下:

命令模式的角色:

1、command 抽象命令,需要執行的命令

2、receiver接受者,就是業務邏輯的執行者

3、invoker呼叫者角色,接受命令,執行命令

以下用通用的**來說明:

通用的receiver類:

/** * 抽象receiver */abstract class receiver /** * 具體的receiver */class concretereceiver1 extends receiver }/** * 具體的receiver */class concretereceiver2 extends receiver }
command類的通用**:

/** * command介面 */inte***ce command/** * 具體的command */class concretecommand implements command  @override  public void execute() }
呼叫者invoker的通用類,執行command的命令即可。

/** * 呼叫者invoker */class invoker   /**   * 執行命令   */  public void action() }
場景測試類:

/** * 場景測試類 */public class client }
命令模式的呼叫鏈如下:

命令模式的優缺點:

1、優點:類間解耦,呼叫者和接收者沒有直接耦合,呼叫者只需呼叫command的方法執行接收者的業務邏輯;可擴充套件性,如果command需要擴充套件,很容易實現,新建乙個新的子類即可。

2、缺點:如果命令很多,command類會很多,增加系統複雜性。

命令模式可以撤銷,實現方式就是在抽象類中加入乙個undo()方法,在具體類中實現undo()方法的具體操作即可。

設計模式之命令模式

command pattern 將請求封裝成物件,這可以讓你使用不同的請求,佇列,或者是日誌請求來引數化其他物件,命令模式也可以支援撤銷操作。命令模式有兩種實現方式 1.在命令管理器中提供設定當前命令接受者的方法,當執行訊息或者是有訊息壓入的時候直接將命令傳送給當前設定的接受者。2.在命令管理器中建...

設計模式之命令模式

當我們有一台多功能的印表機,然後通過電腦直接進行任務,如圖 如果通過這樣的設計直接去呼叫多功能一體機的功能,就會存在此時此刻只能進行乙個任務,不允許有多個客戶端同時操作.那麼現在我們就需要考慮一種新的設計模式,叫做命令設計模式。命令設計模式 將乙個請求封裝為乙個物件,從而使你可用不同的請求對客戶進行...

設計模式之命令模式

1 命令模式 commond 將乙個請求封裝為乙個物件,從而使你可用不同的請求對客戶進行引數化 對請求排隊或記錄請求日誌,以及支援可撤銷的操作。uml圖如下 2 命令模式作用的優點 第一,它能較容易地設計乙個命令佇列 第二,在需要的情況下,可以較容易地將命令記入日誌 第三,允許接收者請求的一方決定是...