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

  • 相关阅读:
    Flash影片剪辑导出视频静止的问题 被解决了!
    关于sample采样器无法改变声调的解决方法
    FL的萌新之路,开始了!
    暑假结束时
    关于Pascal调试时同时出现ntdll.dll、SIGSEGV错误的原因
    XCTF-WEB-view_source
    XCTF-MISC-如来十三掌
    XCTF-MISC-give_you_flag
    《了不起的盖茨比》【开头诗句,尼克独白】
    MiniMIPS32微处理器的流水线相关问题和暂停机制
  • 原文地址:https://www.cnblogs.com/cszdsb/p/6484737.html
Copyright © 2011-2022 走看看