WEB开发网
开发学院网页设计JavaScript javascript设计模式交流 阅读

javascript设计模式交流

 2010-09-14 13:17:22 来源:WEB开发网   
核心提示: 这是一个类似原型继承的元类 且它可指定不论以什么对象为原型,创建的类都至少有一个可覆盖的show方法,javascript设计模式交流(7),如果调换一下顺序,则可变成,Templete Method的实现方法已经是显然的了,将Templete Method需要用到的方法作为参数传递给元类

这是一个类似原型继承的元类 且它可指定不论以什么对象为原型,创建的类都至少有一个可覆盖的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;
    }
  }
}

上一页  2 3 4 5 6 7 8  下一页

Tags:javascript 设计模式 交流

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接