首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

深入解析 Java 設計模式中的命令模式實現

     編輯:Java 相關知識

命令模式核心概念

命令模式將一個請求或操作封裝為一個對象,使得我們可以用不同的請求對客戶端進行參數化,對請求進行排隊或記錄請求日誌,並支援命令的撤銷與恢復功能。這是一種行為型設計模式,核心在於「將行為封裝為對象」。

生活化比喻:公司層級的命令傳遞

想像一家公司的運作:老闆發布命令,中層主管接收後指派給具體員工執行。這個流程中,關鍵在於「命令」本身。若我們將命令抽離出來,封裝為獨立對象,便能實現發布者與執行者的解耦。無論命令來自 CEO、人資部還是其他來源;無論執行者是張三還是李四,系統都能靈活擴展。這正是哲學上所謂的「抓住主要矛盾」。

Java 實現:核心角色與代碼結構

命令模式包含四個核心角色:

  • Command(命令介面):宣告執行操作的介面。
  • ConcreteCommand(具體命令):實現命令介面,持有接收者引用,將調用委派給接收者。
  • Receiver(接收者):真正執行業務邏輯的對象。
  • Invoker(調用者):持有命令對象,負責觸發命令執行。

代碼示例

public interface ICommand {
    void execute();
}

public class ConcreteCommand implements ICommand {
    private Receiver receiver;
    public ConcreteCommand(Receiver receiver) { this.receiver = receiver; }
    @Override public void execute() { receiver.action(); }
}

public class Receiver {
    public void action() { System.out.println("Receiver 執行具體業務"); }
}

public class Invoker {
    private ICommand command;
    public Invoker(ICommand command) { this.command = command; }
    public void invoke() { command.execute(); }
}

public class Test {
    public static void main(String[] args) {
        Receiver receiver = new Receiver();
        ICommand command = new ConcreteCommand(receiver);
        Invoker invoker = new Invoker(command);
        invoker.invoke();
    }
}

優缺點分析

優點

  • 輕鬆構建命令隊列,支援批次處理。
  • 可記錄命令日誌,便於審計與除錯。
  • 支援撤銷與重做操作,增強系統靈活性。
  • 新增命令不影響現有代碼,符合開閉原則。

缺點

可能導致過多具體命令類別膨脹,增加系統複雜度。

適用場景

當需要將請求發送者與接收者解耦、支援操作記錄/撤銷、或需實現宏命令(組合多個命令)時,命令模式是最佳選擇。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved