zoukankan      html  css  js  c++  java
  • 组合模式

    <button id="button">按我</button>
        <script>
          var MacroCommand = function () {
            return {
              commandsList: [],
              add: function (command) {
                console.log(command);
    
                this.commandsList.push(command);
              },
              execute: function () {
                for (var i = 0, command; (command = this.commandsList[i++]); ) {
                  command.execute();
                }
              },
            };
          };
          var openAcCommand = {
            execute: function () {
              console.log("打开空调");
            },
          };
          /**********家里的电视和音响是连接在一起的,所以可以用一个宏命令来组合打开电视和打开音响的命令
           *********/
          var openTvCommand = {
            execute: function () {
              console.log("打开电视");
            },
          };
          var openSoundCommand = {
            execute: function () {
              console.log("打开音响");
            },
          };
          var macroCommand1 = MacroCommand();
          macroCommand1.add(openTvCommand);
          macroCommand1.add(openSoundCommand);
          /*********关门、打开电脑和打登录 QQ 的命令****************/
          var closeDoorCommand = {
            execute: function () {
              console.log("关门");
            },
          };
          var openPcCommand = {
            execute: function () {
              console.log("开电脑");
            },
          };
          var openQQCommand = {
            execute: function () {
              console.log("登录 QQ");
            },
          };
          var macroCommand2 = MacroCommand();
          macroCommand2.add(closeDoorCommand);
          macroCommand2.add(openPcCommand);
          macroCommand2.add(openQQCommand);
    
          /*********现在把所有的命令组合成一个“超级命令”**********/
          var macroCommand = MacroCommand();
          macroCommand.add(openAcCommand);
          macroCommand.add(macroCommand1);
          macroCommand.add(macroCommand2);
          /*********最后给遥控器绑定“超级命令”**********/
          var setCommand = (function (command) {
            document.getElementById("button").onclick = function () {
              command.execute();
            };
          })(macroCommand);
        </script>
  • 相关阅读:
    [Leetcode]@python 65. Valid Number
    二维数组循环求出最大子数组
    一维循环的数组求出最大子数组的和
    电梯调度算法需求分析
    返回一个整数数组中最大子数组的和
    最大子数组求解
    小学数学计算题随机出题软件
    四则运算的设计思路
    学期读书计划
    软件工程概论第十一章
  • 原文地址:https://www.cnblogs.com/TTblog5/p/13162016.html
Copyright © 2011-2022 走看看