Javascript乱弹设计模式系列(3) - 装饰者模式(Decorator)
2010-09-14 13:35:20 来源:WEB开发网每个装饰者都有一个变量来保存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. 什么叫做被装饰者方法之前或者之后,添加行为呢?接着看下下面的例子:
Tags:Javascript 乱弹 设计模式
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接