1、特點
模板方法模式是一種只需使用繼承就可以實現的非常簡單的模式。由兩部分結構組成,第一部分是抽象父類,第二部分是具體的實現子類。通常在抽象父類中封裝了子類的算法框架,包括實現一些公共方法以及封裝子類中所有方法的執行順序。子類通過繼承這個抽象類,也繼承了整個算法結構,並且可以選擇重寫父類的方法。
2、demo
泡咖啡和泡 茶
var Beverage = function() {};
Beverage.prototype.boilWater = function() {
console.log('把水煮沸');
};
Beverage.prototype.brew = function() {}; // 空方法,應該由子類重寫
Beverage.prototype.pourInCup = function() {}; // 空方法,應該由子類重寫
Beverage.prototype.addCondiments = function() {}; // 空方法,應該由子類重寫
Beverage.prototype.init = function() {
this.boilWater();
this.brew();
this.pourInCup();
this.addCondiments();
};
var Coffee = function() {};
Coffee.prototype = new Beverage();
Coffee.prototype.brew = function() {
console.log('用沸水沖泡咖啡');
};
Coffee.prototype.pourInCup = function() {
console.log('把咖啡倒進杯子');
};
Coffee.prototype.addCondiments = function() {
console.log('加糖和牛奶');
};
var Coffee = new Coffee();
Coffee.init();
var Tea = function() {};
Tea.prototype = new Beverage();
Tea.prototype.brew = function() {
console.log('用沸水浸泡茶葉');
};
Tea.prototype.pourInCup = function() {
console.log('把茶倒進杯子');
};
Tea.prototype.addCondiments = function() {
console.log('加檸檬');
};
var tea = new Tea();
tea.init();
參考文獻:《JavaScript設計模式與開發實踐》