JavaScript模板方法模式

2021-01-01  本文已影响0人  晓蟲QwQ

在静态语言中,实现模板方法模式通过继承实现。通过抽象父类封装子类的算法框架——包括实现一些公共方法以及封装子类中所有的执行顺序。

JavaScript中实现模板算法模式

var Beverage = function( param ){
    
    var boilWater = function(){
        console.log('把水煮沸');
    };
    
    var brew = param.brew || function(){
        throw new Error('必须传递brew方法');
    };
    
    var pourInCup = param.pourInCup || function(){
        throw new Error('必须传递pourInCup方法');
    };
    
    var addCondiments = param.addCondiments || function(){
        throw new Error('必须传递addCondiments方法');
    };
    
    var F = function(){};
    
    F.prototype.init(){
        boilWater();
        brew();
        pourInCup();
        addCondiments();
    };
    
    return F;
}

var Coffee = Beverage({
    brew: function(){
        console.log('用沸水冲泡咖啡');
    },
    pourInCup: function(){
        console.log('把咖啡倒进杯子');
    },
    addCondiments: function(){
        console.log('加糖和牛奶');
    }
});

var Tea = Beverage({
    brew: function(){
        console.log('用沸水浸泡茶叶');
    },
    pourInCup: function(){
        console.log('把茶倒进杯子');
    },
    addCondiments: function(){
        console.log('加柠檬');
    }
});

var coffee = new Coffee();
coffee.init();

var tea = new Tea();
tea.init();

其中init()方法为模板方法,其顺序执行具体对象的具体方法,实现了泛化。另模板方法模式也可以使用继承原型的方式实现

上一篇 下一篇

猜你喜欢

热点阅读