命令模式
某些对象发送请求,但是并不知道请求的接受者是谁,也不知道被请求的操作是什么。------所以需要 松耦合的方式来设计,使得请求发送者和请求接收者能够消除彼此之间的耦合关系。
同时,命令模式还具备支持 撤销、排队等操作。
var bindClick = function ( button, func) { button.onclick = func; } var MenuBar = { refresh:function(){ console.log('刷新界面'); } }; var SubMenu = { add:function(){ console.log('增加子菜单'); }, del:function(){ console.log('删除子菜单'); } } //充分解耦,无需清楚请求者与接受者是谁 bindClick( button1, MenuBar.refresh ); bindClick( button2, SubMenu.add );
二。宏命令。与组合模式 相同感觉。
var closeDoorCommand = { excute: function(){ console.log('关门') } } var openPcCommand = { excute: function(){ console.log('打开电脑') } } var openMusiceCommand = { excute: function(){ console.log('打开音乐') } } var MacroCommand = function(){ return { commandsList: [], add: function( command ){ this.commandsList.push( command ); }, excute: function(){ for( var i = 0, command; command = this.commandsList[ i++ ]){ command.excute(); } } } } var macroCommand = MacroCommand(); macroCommand.add( closeDoorCommand ); macroCommand.add( openPcCommand ); macroCommand.add( openMusiceCommand );
macroCommand.excute();
posted on 2017-06-27 22:30 rainbow661314 阅读(73) 评论(0) 编辑 收藏 举报