javaScript设计模式:装饰模式

装饰模式的思想是可以在运行时动态的添加附加功能,即其预期行为可定制和可配置特点。并且在多个配置功能需要按照顺序进行时,都是装饰模式需要解决的问题。

按照这个思路首先我们需要一个描述执行任务的对象,这个对象上包含一系列的可定制和配置的功能,当这个任务执行时将运行中的需要附加的功能时添加到一个配置列表中,最后提供一个处理运行的接口。

//描述任务的对象
let obj = {
    decorators_list:[]
};
//在这个任务对象上添加一系列预期的功能
obj.prototype.xxx = function(){
    //具体的装饰任务
    ...
}
...
//添加装饰任务的工具方法
obj.prototype.decorate = function(decorator){
    this.decorators_list.push(decorator);
}
//处理装饰任务的接口
obj.prototype.execute = function(){
    let i,
        max = this.decorators_list.length;
    for(i = 0; i < max; i++){
        this.decorators_list[i]();
    }
}