模板方法模式
定义
模板方法模式是一种只需使用继承就可以实现的非常简单的模式。
模板方法模式由两部分结构组成,第一部分是抽象父类,第二部分是具体的实现子类。在模板方法模式中,子类实现中的相同部分被上移到父类中,而将不同的部分在子类中实现。
示例
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 = function(){
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();
在这段代码中,我们把 brew、pourInCup、addCondiments、 这些方法依次传入 Beverage 函数, Beverage 函数被调用之后返回构造器 F。F 类中包含了 “模板方法” F.prototype.init。