javascript 装饰者模式

```

//javascript 装饰者模式

//

function Sale(price) {

this.price = price || "100";

this.decorates_list = [];//要装饰的

}

Sale.prototype.getPrice = function () {

var price = this.price,

i,

name,

max = this.decorates_list.length;

for (i = 0; i < max; i++) {

name = this.decorates_list[i];

price = Sale.decorators[name].getPrice(price);

}

return price;

}

//装饰方法

//@parames decorator 装饰物名字

Sale.prototype.decorate = function (decorator) {

this.decorates_list.push(decorator);

}

Sale.decorators={};//装饰物集合

//装饰物,商品包邮

Sale.decorators.baoyou={

getPrice: function(price){

return price - 10;

}

}

//装饰物,商品打折

Sale.decorators.dazhe={

getPrice: function(price){

return price * 0.8;

}

}

//测试

var s = new Sale(99);

s.decorate("baoyou");

s.decorate("dazhe");

console.log(s.getPrice());


```

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 装饰者模式:给对象动态添加职责的方式就是装饰者模式,能够在不改变原对象的情况下,在运行的时候给对象添加新的职责。参...
    smartphp阅读 4,659评论 0 1
  • First-Class Functions Functions in Python are first-class...
    plutoese阅读 4,381评论 1 51
  • **2014真题Directions:Read the following text. Choose the be...
    又是夜半惊坐起阅读 13,487评论 0 23
  • 1 场景问题# 1.1 复杂的奖金计算## 考虑这样一个实际应用:就是如何实现灵活的奖金计算。 奖金计算是相对复杂...
    七寸知架构阅读 9,576评论 4 67
  • 《从前慢》 作者:木心 记得早先少年时 大家诚诚恳恳 说一句 是一句 清早上 火车站 长街黑暗无行人 卖豆浆的小店...
    喵小东阅读 2,555评论 0 0