<h1>组合模式透明性带来的安全性问题</h1>
<p>组合模式的透明性使得发起请求的客户不用顾忌树中是组合对象和叶对象的区别,但他们本质上是有区别大的</p>
<p>组合 对象可以拥有子节点,叶对象下面就没有子节点,所以我们也许会发生一些误操作,比如试图往叶对象添加子节点。</p>
<p>解决的办法通常是给叶对象也添加add方法,并且在调用这个方法时,抛出一个异常及时提醒客户。</p>
<script>
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 openTvCommand = {
execute: function(){
console.log( "打开电视" );
},
add: function(){
throw new Error( "叶对象不能添加子节点" );
}
};
var macroCommand = MacroCommand();
macroCommand.add( openTvCommand );
macroCommand.execute();
openTvCommand.add( macroCommand );
</script>
js组合模式透明性带来的安全问题
最新推荐文章于 2024-03-11 15:47:42 发布