国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

23種設(shè)計(jì)模式之:命令模式

這篇具有很好參考價(jià)值的文章主要介紹了23種設(shè)計(jì)模式之:命令模式。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

命令模式是一種行為設(shè)計(jì)模式,它將一個(gè)請求封裝成一個(gè)對象,從而讓你使用不同的請求、隊(duì)列或者請求的日志來參數(shù)化其他對象。它也支持可撤銷的操作。命令模式的關(guān)鍵是引入了抽象層——命令接口,具體命令實(shí)現(xiàn)該接口,執(zhí)行操作的對象從執(zhí)行具體操作的職責(zé)中解耦出來。

使用場景

  • 當(dāng)你需要參數(shù)化對象根據(jù)請求來執(zhí)行操作時(shí),可以使用命令模式,因?yàn)樗梢灾付ê蛨?zhí)行請求。
  • 當(dāng)你需要在不同的時(shí)間指定、排隊(duì)和執(zhí)行請求時(shí)。命令對象可以在一個(gè)隊(duì)列中排隊(duì),并在稍后執(zhí)行。
  • 當(dāng)需要支持撤銷操作時(shí)。命令模式可以將狀態(tài)回滾到某個(gè)命令被執(zhí)行之前的狀態(tài)。
  • 當(dāng)你需要將操作組裝成復(fù)雜操作時(shí),可以使用命令模式,它支持組合命令。

好處

  • 降低耦合度:命令模式通過引入命令接口,使得請求的發(fā)送者和接收者解耦,增加新的命令很方便,不需要改動舊的代碼。
  • 增強(qiáng)可擴(kuò)展性:可以很容易地添加新命令,只需實(shí)現(xiàn)接口即可。
  • 支持撤銷操作:可以通過實(shí)現(xiàn)撤銷方法來輕松支持撤銷。
  • 可以組合命令:可以將多個(gè)命令組裝成宏命令,一次性執(zhí)行多個(gè)操作。

Java代碼演示

接收者(Receiver)

接收者類Light實(shí)際執(zhí)行與請求相關(guān)的操作:

public class Light {
    public void turnOn() {
        System.out.println("Light is on");
    }

    public void turnOff() {
        System.out.println("Light is off");
    }
}

命令接口(Command)

命令接口定義了執(zhí)行操作的方法:

public interface Command {
    void execute();
}

具體命令(Concrete Commands)

具體命令實(shí)現(xiàn)命令接口,并定義接收者和操作之間的綁定關(guān)系:

public class LightOnCommand implements Command {
    private Light light;

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

    @Override
    public void execute() {
        light.turnOn();
    }
}

public class LightOffCommand implements Command {
    private Light light;

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

    @Override
    public void execute() {
        light.turnOff();
    }
}

調(diào)用者(Invoker)

調(diào)用者持有命令對象,并在某個(gè)時(shí)間點(diǎn)調(diào)用命令對象的execute()方法:

public class RemoteControl {
    private Command command;

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

    public void pressButton() {
        if (command != null) {
            command.execute();
        }
    }
}

客戶端(Client)

客戶端決定哪個(gè)命令執(zhí)行,以及它的接收者是誰:

public class Client {
    public static void main(String[] args) {
        // 創(chuàng)建接收者
        Light light = new Light();

        // 創(chuàng)建命令,并設(shè)置其接收者
        Command lightsOn = new LightOnCommand(light);
        Command lightsOff = new LightOffCommand(light);

        // 創(chuàng)建調(diào)用者,并關(guān)聯(lián)命令
        RemoteControl control = new RemoteControl();
        control.setCommand(lightsOn); // 設(shè)置開燈命令
        control.pressButton(); // 執(zhí)行開燈命令

        control.setCommand(lightsOff); // 設(shè)置關(guān)燈命令
        control.pressButton(); // 執(zhí)行關(guān)燈命令
    }
}

命令模式的好處

通過這個(gè)更完整的示例,我們可以看到命令模式的幾個(gè)關(guān)鍵好處:

  • 解耦調(diào)用操作和接收者RemoteControl(調(diào)用者)不直接操作Light(接收者),而是通過命令對象進(jìn)行間接操作。這意味著Light類的任何變化都不會直接影響到RemoteControl類,反之亦然。
  • 易于擴(kuò)展:要增加新的命令操作,只需添加一個(gè)新的Command實(shí)現(xiàn)即可,無需修改現(xiàn)有的InvokerReceiver類。
  • 組合命令:可以很容易地實(shí)現(xiàn)宏命令,即一個(gè)命令觸發(fā)多個(gè)操作。

這樣,使用命令模式提供了代碼的靈活性和擴(kuò)展性,同時(shí)也使得操作的撤銷和重做成為可能。文章來源地址http://www.zghlxwxcb.cn/news/detail-833843.html

到了這里,關(guān)于23種設(shè)計(jì)模式之:命令模式的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Java23種設(shè)計(jì)模式之【單例模式】

    Java23種設(shè)計(jì)模式之【單例模式】

    目錄 一.單例模式的起源,和應(yīng)用場景 1.單例模式的前世今生! ?2.什么是單例模式? 2.1使用單例模式的注意事項(xiàng) 2.2如何理解單例模式? 2.3單例模式的優(yōu)勢以及不足! 2.4使用場景 二.實(shí)現(xiàn) 1.實(shí)現(xiàn)思路 1.1創(chuàng)建一個(gè) Singleton 類 (SingleObject.java) 1.2從 singleton 類獲取唯一的對象 (Sing

    2024年02月10日
    瀏覽(33)
  • Java中23種設(shè)計(jì)模式-單例模式--工廠模式

    Java中23種設(shè)計(jì)模式-單例模式--工廠模式

    加油,新時(shí)代打工人! 23種設(shè)計(jì)模式定義介紹 Java中23種設(shè)計(jì)模式-單例模式 Java中23種設(shè)計(jì)模式-單例模式2–懶漢式線程不安全 Java中23種設(shè)計(jì)模式-單例模式2–懶漢式2線程安全 Java中23種設(shè)計(jì)模式-單例模式–餓漢式 定義: 工廠模式(Factory Pattern)是 Java 中最常用的設(shè)計(jì)模式之一

    2024年02月21日
    瀏覽(23)
  • JAVA 23種設(shè)計(jì)模式示例

    JAVA 23種設(shè)計(jì)模式示例

    目錄 一.單例模式 二.工廠方法模式 三.抽象工廠模式 四.建造者模式 五.原型模式 六.享元模式 七.門面模式 八.適配器模式 九.裝飾者模式 十.策略模式 十一.模板方法模式 十二.觀察者模式 十三.責(zé)任鏈模式 十四.代理模式 十五.橋接模式 十六.組合模式 十七.命令模式 十八.狀態(tài)

    2024年02月13日
    瀏覽(26)
  • Java中的23種設(shè)計(jì)模式

    ? ? ? ? 單例模式是 Java 中最簡單的設(shè)計(jì)模式之一。通過單例模式,可以保證系統(tǒng)中,應(yīng)用了單例模式的類,只有一個(gè)對象實(shí)例。包括五種:餓漢式、懶漢式、雙重校驗(yàn)、靜態(tài)內(nèi)部類、枚舉類。 1.1 餓漢式 特點(diǎn):類加載時(shí)就初始化, 避免了線程同步的問題,是線程安全的。

    2024年02月06日
    瀏覽(21)
  • Java的23種設(shè)計(jì)模式

    Java的23種設(shè)計(jì)模式

    設(shè)計(jì)模式就是對優(yōu)良設(shè)計(jì)的總結(jié),固化下來的寫法,是業(yè)界公認(rèn)的優(yōu)雅設(shè)計(jì)。 單例模式常見的不同寫法有八種之多,真正完美無缺的只有一種枚舉單例。其他單例都存在些許問題,但一般不會有人去用枚舉來寫單例,因?yàn)楹芄?,本來只是要搞個(gè)單例結(jié)果整了個(gè)枚舉,我也不是

    2024年03月09日
    瀏覽(30)
  • Java23種設(shè)計(jì)模式-結(jié)構(gòu)型模式之組合模式

    組合模式 (Composite Pattern):將 對象組合成樹狀結(jié)構(gòu) 以表示“ 部分-整體 ”層次結(jié)構(gòu),同時(shí)保持對單個(gè)對象和組合對象的一致性操作,主要目的是簡化客戶端代碼,因?yàn)樗梢越y(tǒng)一處理單個(gè)對象和組合對象。 通常包含以下幾個(gè)角色: 角色1. 抽象組件 (Component):聲明了 組

    2024年04月26日
    瀏覽(30)
  • 【玩轉(zhuǎn)23種Java設(shè)計(jì)模式】行為型模式篇:模板模式

    軟件設(shè)計(jì)模式(Design pattern),又稱設(shè)計(jì)模式,是一套被反復(fù)使用、多數(shù)人知曉的、經(jīng)過分類編目的、代碼設(shè)計(jì)經(jīng)驗(yàn)的總結(jié)。使用設(shè)計(jì)模式是為了可重用代碼、讓代碼更容易被他人理解、保證代碼可靠性、程序的重用性。 匯總目錄鏈接:【玩轉(zhuǎn)23種Java設(shè)計(jì)模式】學(xué)習(xí)目錄匯總

    2024年02月16日
    瀏覽(21)
  • 【Java中23種設(shè)計(jì)模式-單例模式--餓漢式】

    加油,新時(shí)代打工人! 簡單粗暴,直接上代碼。 23種設(shè)計(jì)模式定義介紹 Java中23種設(shè)計(jì)模式-單例模式 Java中23種設(shè)計(jì)模式-單例模式2–懶漢式線程不安全 Java中23種設(shè)計(jì)模式-單例模式2–懶漢式2線程安全

    2024年02月22日
    瀏覽(19)
  • 【玩轉(zhuǎn)23種Java設(shè)計(jì)模式】行為型模式篇:責(zé)任鏈模式

    軟件設(shè)計(jì)模式(Design pattern),又稱設(shè)計(jì)模式,是一套被反復(fù)使用、多數(shù)人知曉的、經(jīng)過分類編目的、代碼設(shè)計(jì)經(jīng)驗(yàn)的總結(jié)。使用設(shè)計(jì)模式是為了可重用代碼、讓代碼更容易被他人理解、保證代碼可靠性、程序的重用性。 匯總目錄鏈接:【玩轉(zhuǎn)23種Java設(shè)計(jì)模式】學(xué)習(xí)目錄匯總

    2024年02月13日
    瀏覽(18)
  • Java23種設(shè)計(jì)模式-創(chuàng)建型模式之單例模式

    單例模式 (Singleton Pattern):通過單例模式的方法創(chuàng)建的 類在當(dāng)前進(jìn)程中只有一個(gè)實(shí)例 (根據(jù)需要,也有可能一個(gè)線程中屬于單例,如:僅線程上下文內(nèi)使用同一個(gè)實(shí)例),該類負(fù)責(zé) 創(chuàng)建自己的對象 ,同時(shí) 確保只有單個(gè)對象 被創(chuàng)建。 注 : 1、單例類 只能 有 一個(gè)實(shí)例 。

    2024年04月26日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包