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

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

 2010-09-14 13:35:20 来源:WEB开发网   
核心提示: 每个装饰者都有一个变量来保存IManifdder的引用,现在来实现它的具体类://中国制造function MakeInChinaDecorator(manifdder) {ManifdderDecorator.call(this,manifdder);}inheritClass(Make

每个装饰者都有一个变量来保存IManifdder的引用,现在来实现它的具体类:

//中国制造
function MakeInChinaDecorator(manifdder) {
  ManifdderDecorator.call(this,manifdder);
}
inheritClass(MakeInChinaDecorator, ManifdderDecorator);
MakeInChinaDecorator.prototype.electrify = function() {
  return this.manifdder.electrify() + ". 中国标准电压为220V.";
};
MakeInChinaDecorator.prototype.getPrice = function() {
  return this.manifdder.getPrice() + 100.0;
};
//日本制造
function MakeInJapanDecorator(manifdder) {
  ManifdderDecorator.call(this,manifdder);
}
inheritClass(MakeInJapanDecorator);
MakeInJapanDecorator.prototype.electrify = function() {
  return this.manifdder.electrify() + ".日本标准电压为110V.";
};
MakeInJapanDecorator.prototype.getPrice = function() {
  return this.manifdder.getPrice() + 200.0;
};

其中它覆盖了抽象类中的electrify和getPrice方法;

现在执行它们:

var manifdder = new Manifdder();
alert(manifdder.getPrice()); // 得到500.0
manifdder = new MakeInChinaManifdder(manifdder);
alert(manifdder.getPrice()); // 得到600.0

如果再需要添加一个具体装饰类MakeInAmericaDecorator,只要再定义一个继承抽象类的子类即可;

3. 什么叫做被装饰者方法之前或者之后,添加行为呢?接着看下下面的例子:

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

Tags:Javascript 乱弹 设计模式

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