javascript设计模式交流
2010-09-14 13:17:22 来源:WEB开发网这是一个类似原型继承的元类 且它可指定不论以什么对象为原型,创建的类都至少有一个可覆盖的show方法。如果调换一下顺序,则可变成,不论如何,都会有不可覆盖的show方法,原型当中的show方法会被忽略:
Code:
functionparent(prototype){
returnfunction(){
for(varpino)this[p]=prototype[p];
this.show=function(){
alert("show");
}
};
}
实际上到此为止,Templete Method的实现方法已经是显然的了,将Templete Method需要用到的方法作为参数传递给元类,将Templete Method放在上例的show的位置即可。下面给出一个广度优先搜索的例子:(以后也许还会用它做策略模式的组成部分 hoho)
Code:
functionBreadthFirstSearch(extend,beam,finish)
{
returnfunction(){
this.finish=finish;
this.extend=extend;
this.beam=beam;
this.search=function(){
varqueue=[this];
while(queue.length)
{
varcurrent=queue.shift();
if(!current.beam()){
varextended=current.extend();
for(vari=0;i<extended.length;i++)
{
if(extended[i].finish())returnextended[i];
queue.push(extended[i]);
}
}
}
returnnull;
}
}
}
Tags:javascript 设计模式 交流
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接