zoukankan      html  css  js  c++  java
  • 组合模式--超级宏命令

    var MacroCommand = function(){
      return {
        commandList: [],
        add: function( command ){
        this.commandList.push(command);
        },
        execute: function(){
          for(var i = 0,command;command = this.commandList[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);
    
    macroCommand.execute();

     摘自JavaScript设计模式与开发实践

  • 相关阅读:
    31款简单实用的CSS+JS下拉菜单脚本
    POWERDESIGNER 15 反向生成PDM[转]
    WCF异常信息
    下载文件
    分区表的维护 ORA14402 更新分区关键字列
    [转]Winform框架之字典数据管理
    用例图(User Case)
    datetime的时值
    JS date对象的减法处理
    JS获取当前页面的高度
  • 原文地址:https://www.cnblogs.com/cszdsb/p/6484737.html
Copyright © 2011-2022 走看看