侧边栏壁纸
博主头像
落叶人生博主等级

走进秋风,寻找秋天的落叶

  • 累计撰写 130562 篇文章
  • 累计创建 28 个标签
  • 累计收到 9 条评论
标签搜索

目 录CONTENT

文章目录

javascript的组合模式(四)

2024-05-12 星期日 / 0 评论 / 0 点赞 / 89 阅读 / 2249 字

组合模式,重点在组合。把一些基本的操作组合成一个复杂的操作集合,以便一个命令执行一系列操作。组合模式的核心不在于封装了一系列操作,而在于封装的一个操作对象可以继续被封装成更复杂的操作集合,一直递归下去

组合模式,重点在组合。把一些基本的操作组合成一个复杂的操作集合,以便一个命令执行一系列操作。组合模式的核心不在于封装了一系列操作,而在于封装的一个操作对象可以继续被封装成更复杂的操作集合,一直递归下去,组合出各种你想要的操作动作集合。

//组合模式/*<html><head><meta http-equiv="content-type" content="text/html;charset=utf-8"><head><body>     <button id="btn">点击</button>    <script src="group.js"></script></body>  </html>*/var MacroCommand = function(){	return {		commandList:[],		add: function(cmd){					this.commandList.push(cmd);		},		execute: function(){			for(var cmd;cmd = this.commandList.shift();){				cmd.execute();			}		}				}}var openAcCommand = {      execute:function(){         console.log('打开空调')      }  };  var openTvCommand={     execute:function(){        console.log('打开电视');     }  }     var openSoundCommand={      execute:function(){          console.log('打开音响');      }  };var macroCommand1 = MacroCommand();   macroCommand1.add(openAcCommand);macroCommand1.add(openTvCommand);macroCommand1.add(openSoundCommand);// 组合成一个操作组合 macroCommand1.execute(),可以执行该一系列操作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);// 组合成另一个操作组合 macroCommand2.execute(),可以执行该一系列操作var macroCommand = MacroCommand();macroCommand.add(macroCommand2);macroCommand.add(macroCommand1);// 组合成一个大操作组合 macroCommand.execute(),可以执行该一系列操作var btn = (function(element){	element.onclick = function(){		macroCommand.execute();	}})(document.getElementById('btn'))

 

广告 广告

评论区