装饰器模式:在不修改类原来接口的情况下,动态的为对象添加功能
优点:扩展对象更灵活,可组合
缺点:增加复杂性
最佳实践:http://taobaofed.org/blog/2015/11/16/es7-decorator/#4、经典实现:Logger
// 原始类
function Milk(){
this.price = 1;
}
// 加鸡蛋
function addEgg(milk){
milk.price += 1;
}
// 加糖
function addSugger(milk){
milk.price += 0.5;
}
// 加蜂蜜
function addHoney(milk){
milk.price += 1.5;
}
// 一杯加鸡蛋和糖的牛奶
var milk1 = new Milk();
addEgg(milk1);
addSugger(milk1);
// 一杯加鸡蛋和蜂蜜的牛奶
var milk2 = new Milk();
addEgg(milk2);
addHoney(milk2);