<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      設(shè)計模式-命令模式

      命令模式(Command Pattern) 是一種行為型設(shè)計模式,它將一個請求封裝為一個對象,從而使你可以用不同的請求對客戶進行參數(shù)化,對請求排隊或記錄請求日志,以及支持可撤銷的操作。

      命令模式的核心思想是 將請求的發(fā)出者與處理者解耦,請求的發(fā)出者只需知道如何調(diào)用命令,而不需要了解命令的具體執(zhí)行細節(jié)。


      命令模式的組成部分

      1. 命令接口(Command):定義了一個統(tǒng)一的接口,用于執(zhí)行命令。
      2. 具體命令類(ConcreteCommand):實現(xiàn)命令接口,封裝具體的操作邏輯。
      3. 接收者(Receiver):實際執(zhí)行命令的類,包含具體的操作實現(xiàn)。
      4. 調(diào)用者(Invoker):負責調(diào)用命令對象以執(zhí)行請求。
      5. 客戶端(Client):創(chuàng)建具體命令對象并將其綁定到接收者和調(diào)用者。

      命令模式的使用場景

      1. 需要對行為進行封裝時:將動作抽象成命令類對象。
      2. 支持撤銷/重做功能:通過保存命令歷史記錄。
      3. 支持請求的排隊和日志功能
      4. 需要將調(diào)用者與實際執(zhí)行者解耦

      示例:智能家居命令控制

      假設(shè)我們有一個智能家居系統(tǒng),可以通過命令模式來控制燈的開關(guān)操作。


      1. 定義命令接口

      // 命令接口
      interface Command {
          void execute(); // 執(zhí)行命令
          void undo();    // 撤銷命令
      }
      

      2. 創(chuàng)建接收者(Receiver)

      // 接收者:燈
      class Light {
          public void turnOn() {
              System.out.println("燈已打開");
          }
      
          public void turnOff() {
              System.out.println("燈已關(guān)閉");
          }
      }
      

      3. 創(chuàng)建具體命令類

      // 具體命令:打開燈
      class TurnOnLightCommand implements Command {
          private Light light;
      
          public TurnOnLightCommand(Light light) {
              this.light = light;
          }
      
          @Override
          public void execute() {
              light.turnOn();
          }
      
          @Override
          public void undo() {
              light.turnOff();
          }
      }
      
      // 具體命令:關(guān)閉燈
      class TurnOffLightCommand implements Command {
          private Light light;
      
          public TurnOffLightCommand(Light light) {
              this.light = light;
          }
      
          @Override
          public void execute() {
              light.turnOff();
          }
      
          @Override
          public void undo() {
              light.turnOn();
          }
      }
      

      4. 創(chuàng)建調(diào)用者(Invoker)

      // 調(diào)用者:遙控器
      class RemoteControl {
          private Command command;
      
          // 設(shè)置命令
          public void setCommand(Command command) {
              this.command = command;
          }
      
          // 執(zhí)行命令
          public void pressButton() {
              if (command != null) {
                  command.execute();
              }
          }
      
          // 撤銷命令
          public void pressUndo() {
              if (command != null) {
                  command.undo();
              }
          }
      }
      

      5. 客戶端代碼

      public class CommandPatternExample {
          public static void main(String[] args) {
              // 創(chuàng)建接收者(燈)
              Light light = new Light();
      
              // 創(chuàng)建具體命令對象
              Command turnOnCommand = new TurnOnLightCommand(light);
              Command turnOffCommand = new TurnOffLightCommand(light);
      
              // 創(chuàng)建調(diào)用者(遙控器)
              RemoteControl remote = new RemoteControl();
      
              // 綁定打開燈命令并執(zhí)行
              remote.setCommand(turnOnCommand);
              remote.pressButton(); // 輸出:燈已打開
      
              // 撤銷打開燈命令
              remote.pressUndo(); // 輸出:燈已關(guān)閉
      
              // 綁定關(guān)閉燈命令并執(zhí)行
              remote.setCommand(turnOffCommand);
              remote.pressButton(); // 輸出:燈已關(guān)閉
      
              // 撤銷關(guān)閉燈命令
              remote.pressUndo(); // 輸出:燈已打開
          }
      }
      

      運行結(jié)果

      燈已打開
      燈已關(guān)閉
      燈已關(guān)閉
      燈已打開
      

      優(yōu)點

      1. 降低耦合:命令模式將請求發(fā)送者和實際執(zhí)行者分離。
      2. 支持擴展:可以輕松增加新的命令,而無需修改已有代碼。
      3. 支持撤銷和重做:通過命令對象保存操作狀態(tài)。

      缺點

      1. 增加了類的數(shù)量:每個具體命令類都會新增一個類。
      2. 增加了系統(tǒng)的復雜性:特別是當命令較多時。

      總結(jié)

      命令模式通過將請求封裝為命令對象,使得請求的發(fā)出者和接收者之間完全解耦。它特別適合在需要支持操作撤銷、請求排隊等功能的場景中應用。

      posted @ 2025-01-15 16:44  龐某人  閱讀(63)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 少妇宾馆粉嫩10p| 青青狠狠噜天天噜日日噜| 国产一精品一av一免费爽爽| 在线播放亚洲成人av| 麻豆国产成人av高清在线| 亚洲欧美综合在线天堂| 国产精品久线在线观看| 亚洲国产亚洲国产路线久久| 在国产线视频A在线视频| 国产中文字幕在线一区| 亚洲精品日本久久久中文字幕| 亚洲色偷偷色噜噜狠狠99| 亚洲高潮喷水无码AV电影| 国产啪视频免费观看视频| 国产精品久久久久久久久软件| 激情综合网激情综合网激情| 国产成人午夜福利在线播放| 国产精品成人中文字幕| 人人做人人澡人人人爽| 无码国产欧美一区二区三区不卡| 青青青青久久精品国产| 日本精品人妻无码77777| 国产精品色哟哟成人av| 欧美成人午夜在线观看视频| 国产成人午夜福利院| 熟女女同亚洲女同中文字幕| 久久精品中文字幕少妇| 久久99久久99精品免观看| 女人被爽到高潮视频免费国产 | 亚洲一区二区三区在线播放无码 | 无码精品人妻一区二区三李一桐| 又爽又黄又无遮挡的激情视频| 国产精品无码不卡在线播放| 东京热人妻无码一区二区AV| 欧美极品色午夜在线视频| 一区二区三区日本久久九| 亚洲一区二区三区在线播放无码 | 视频一区二区 国产视频| 人妻中文字幕精品系列| 国产成人综合欧美精品久久| 国产色悠悠在线免费观看|