WEB开发网
开发学院网页设计JavaScript Javascript乱弹设计模式系列(3) - 装饰者模式(De... 阅读

Javascript乱弹设计模式系列(3) - 装饰者模式(Decorator)

 2010-09-14 13:35:20 来源:WEB开发网   
核心提示: 在方法之后添加行为:function MakeInChinaDecorator(manifdder) {//}inheritClass(MakeInChinaDecorator, ManifdderDecorator);//MakeInChinaDecorator.prototype.ge

在方法之后添加行为:

function MakeInChinaDecorator(manifdder) {
  //
}
inheritClass(MakeInChinaDecorator, ManifdderDecorator);
//
MakeInChinaDecorator.prototype.getPrice = function() {
  return this.manifdder.getPrice() + 100.0;
};

实际上刚才上面的那个例子,就是方法之后添加行为的方式,当实例化MakeInChinaDecorator对象的时候,它的装饰目的是为了价格上的差异,当调用getPrice(方法之后)的时候,价格上才得以体现出来,在原来价格的基础上加上100.0。

而在方法之前添加行为,我这里在增加一个复印机的颜色装饰类:

function ColorDecorator(manifdder, color) {
  ManifdderDecorator.call(this,manifdder);
  this.color = color;
}
inheritClass(ColorDecorator, ManifdderDecorator);
ColorDecorator.prototype.getDescription = function() {
  return this.manifdder.getDescription() + ": " + "它的颜色是" + this.color;
};

当实例化ColorDecorator对象的时候,它的装饰目的已经在构造函数中得到颜色上的体现,因此它是在getDescription()方法调用之前就得到体现了。

现在执行它:

manifdder = new ColorDecorator(manifdder, "白色");
alert(manifdder.getDescription()); //得到“它的颜色是白色”

4. 现在我要实现多功能复印机,还具有打印,扫描,传真功能,那么开始添加它们的装饰类:

function PrintDecorator(manifdder) {
  ManifdderDecorator.call(this,manifdder);
}
inheritClass(PrintDecorator, ManifdderDecorator);
PrintDecorator.prototype.getDescription = function() {
  return this.manifdder.getDescription() + ": " + "它具有打印功能. ";
};
PrintDecorator.prototype.getPrice = function() {
  return this.manifdder.getPrice() + 220.0;
};
PrintDecorator.prototype.print = function() {
  return "Print!";
};

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

Tags:Javascript 乱弹 设计模式

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