8、模板方法模式

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設計模式與開發實踐》

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章