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

  • 相关阅读:
    面试准备
    论文投稿Cover letter
    Pycharm 快捷键
    linux下常用命令:
    Qt中数据模块学习
    Qt 多线程和网络编程学习
    VS高效开发快捷键
    良好编码风格习惯整理
    Qt QAxObject操作excel文件过程总结(转):
    Qt开发中的实用笔记三--关于各种类的零碎知识点:
  • 原文地址:https://www.cnblogs.com/cszdsb/p/6484737.html
Copyright © 2011-2022 走看看