中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

說說設計模式~命令模式(command)

回到目錄

概述

命令模式(Command Pattern)是一種(zhong)行為型設(she)計模式,它將請(qing)(qing)求(qiu)封裝(zhuang)成一個對象,從(cong)而允許我們根據不同的(de)(de)請(qing)(qing)求(qiu)將客戶端參數化,并且能夠將請(qing)(qing)求(qiu)排隊(dui)或(huo)記錄請(qing)(qing)求(qiu)日志、支持撤銷操作等(deng)。該模式使(shi)得請(qing)(qing)求(qiu)的(de)(de)發送(song)者和(he)接收(shou)者解耦。

使(shi)用(yong)命(ming)令模式(shi)的(de)主要(yao)目的(de)是將方法調用(yong)封裝成對象,這樣可以(yi)在不同的(de)上(shang)下文(wen)中使(shi)用(yong)不同的(de)請(qing)(qing)求(qiu)、隊(dui)列或日志來參數化(hua)其他對象。這使(shi)得(de)請(qing)(qing)求(qiu)的(de)發送者和接收者之間的(de)耦合度降低,并且(qie)能夠靈(ling)活地(di)擴展和變化(hua)請(qing)(qing)求(qiu)的(de)處理。

包含的對象

命令模式(shi)的主要參(can)與者(zhe)包(bao)括:

  • Command(命令):聲明執行操作的接口,通常包含執行方法 execute()
  • ConcreteCommand(具體命令):實現 Command 接口,將一個接收者對象綁定于一個動作,并實現執行方法。
  • Receiver(接收者):執行命令的相關操作,是具體業務邏輯的實際執行者。
  • Invoker(調用者):發出具體命令并要求命令執行請求的對象。
  • Client(客戶端):創建具體命令對象并設置其接收者。

在代碼中的體現

以(yi)下是一個使用命令(ling)模式(shi)的(de)簡單示例,以(yi)控制電燈(deng)的(de)開關(guan)操作(zuo)為例:

  1. 定義命令接口和具體命令類:
// Command(命令)
public interface Command {
    void execute();
}

// ConcreteCommand(具體命令)
public class LightOnCommand implements Command {
    private Light light;

    public LightOnCommand(Light light) {
        this.light = light;
    }

    @Override
    public void execute() {
        light.turnOn();
    }
}
  1. 定義接收者類:
// Receiver(接收者)
public class Light {
    public void turnOn() {
        System.out.println("Light turned on");
    }

    public void turnOff() {
        System.out.println("Light turned off");
    }
}
  1. 定義調用者類:
// Invoker(調用者)
public class RemoteControl {
    private Command command;

    public void setCommand(Command command) {
        this.command = command;
    }

    public void pressButton() {
        command.execute();
    }
}
  1. 客戶端代碼示例:
// Client(客戶端)
public class Main {
    public static void main(String[] args) {
        // 創建接收者對象
        Light light = new Light();

        // 創建具體命令對象并設置接收者
        Command lightOnCommand = new LightOnCommand(light);

        // 創建調用者對象并設置命令
        RemoteControl remoteControl = new RemoteControl();
        remoteControl.setCommand(lightOnCommand);

        // 執行命令
        remoteControl.pressButton();
    }
}

在上述示例中,命令模式的主要參與者包括 Command 接口和 LightOnCommand 具體命令類。Light

類作為接收者執行實際的命令操作。RemoteControl 類作(zuo)為調(diao)用(yong)者負責接(jie)收命(ming)令并執行(xing)。客(ke)戶(hu)端代碼(ma)創建接(jie)收者對象(xiang)(xiang)、具體命(ming)令對象(xiang)(xiang)和調(diao)用(yong)者對象(xiang)(xiang),并將它們組合在一起進行(xing)命(ming)令的執行(xing)。

通過命令模式,我們可以將控制電燈開關的操作封裝成一個命令對象,使得命令的發送者和接收者解耦,且能夠動態地設置命令并執行。這樣的設計可以方便地擴展和修改命令的處理邏輯,以及支持命令的撤銷和重做操作等。
回到目錄

posted @ 2023-06-28 10:11  張占嶺  閱讀(173)  評論(0)    收藏  舉報