透明性带来的安全问题-清华大学计算机考研经验贴.
10.6透明性带来的安全问题组合模式的透明性使得发起请求的客户不用去顾忌树中组合对象和叶对象的区别,但它们在本质上有是区别的。组合对象可以拥有子节点,叶对象下面就没有子节点,所以我们也许会发生一些误操作,比如试图往叶对象中添加子节点。解决方案通常是给叶对象也增加add方法,并且在调用这个方法时,抛出一个异常来及时提醒客户,代码如下: var MacroCommand = function(){ return { commandsList: [], add: function( command ){ this.commandsList.push( command ); }, execute: function(){ for ( var i = 0, command; command = this.commandsList[ i++ ]; ){ command.execute(); } }; var openTvCommand = { execute: function(){ console.log( '打开电视' ); }, add: function(){图灵社区会员bala233专享尊重版权
8.5MB
文件大小:
评论区