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设计模式与开发实践

  • 相关阅读:
    oracle-RAC修改服务器ip
    windows下安装sphinx-3.1.1
    linux下安装sphinx-for-chinese 支持中文全文索引
    TP通过sphinxapi接口实现全文搜索
    oracle常用公式
    查看TR请求内所有对象信息
    请求释放后如何取消释放
    S4 TO HANA 升级 比对升级过程中的程序变更 TR
    S4,执行外币评估(FAGL_FCV)后,对原因代码的替代不生效
    OVAH 由原提示消息改成报错 SO
  • 原文地址:https://www.cnblogs.com/cszdsb/p/6484737.html
Copyright © 2011-2022 走看看