WEB开发网
开发学院网页设计JavaScript Javascript乱弹设计模式系列(2) - 抽象工厂以及工... 阅读

Javascript乱弹设计模式系列(2) - 抽象工厂以及工厂方法模式(Factory)

 2010-09-14 13:35:26 来源:WEB开发网   
核心提示: 4. MemberFactory.js不变,从简单工厂直接复制,Javascript乱弹设计模式系列(2) - 抽象工厂以及工厂方法模式(Factory)(5),5. 添加IBlock.js,创建布局接口:varIBlock=newInterface("IBlock",

4. MemberFactory.js不变,从简单工厂直接复制。

5. 添加IBlock.js,创建布局接口:

varIBlock=newInterface("IBlock",[["getData"]]);

6. 实现它的具体类,这里添加LMRBlock.js(左 中 右 布局),LRMBlock.js(左上 左下 右 布局),MLRBlock.js(左 右上 右下 布局),这里以LMRBlock.js为例:

//左、中、右结构样式版块
functionLMRBlock()
{
  this.color="blue";
  Interface.registerImplements(this,IBlock);//继承布局IBlock接口
}
LMRBlock.prototype={
  displayBlock:function(){
    this.getData();
    //具体布局实现
  },
  getData:function(){
    returnnewError("抽象方法,不能调用");
  }
}

这里首先创建的是类似于一个抽象类,该类首先继承于布局接口,从代码中可以看出getData方法的实现返回错误异常,实际上它作为一个抽象方法,不需要实现任何东西;这里displayBlock方法中调用它的抽象方法,这里就是典型的抽象方法模式,以备于它的子类继承实现它的抽象方法;

现在看看它的子类有哪些:

functionBlueLMRBlock(){
}
inheritClass(BlueLMRBlock,LMRBlock);//继承LMRBlock抽象类
BlueLMRBlock.prototype.getData=function(){//父类抽象方法的具体实现
  $(".tabs-nava,.tabs-navaspan").css({"background-image":"url(script/tab/tab_blue.png)"});
  this.color="blue";
}
functionGreenLMRBlock(){
}
inheritClass(GreenLMRBlock,LMRBlock);
GreenLMRBlock.prototype.getData=function(){
  $(".tabs-nava,.tabs-navaspan").css({"background-image":"url(script/tab/tab_green.png)"});
  this.color="green";
}
functionRedLMRBlock(){
}
inheritClass(RedLMRBlock,LMRBlock);
RedLMRBlock.prototype.getData=function(){
  $(".tabs-nava,.tabs-navaspan").css({"background-image":"url(script/tab/tab_red.png)"});
  this.color="red";
}
functionVioletLMRBlock(){
}
inheritClass(VioletLMRBlock,LMRBlock);
VioletLMRBlock.prototype.getData=function(){
  $(".tabs-nava,.tabs-navaspan").css({"background-image":"url(script/tab/tab_violet.png)"});
  this.color="violet";
}

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

Tags:

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