模板方法模式
定义:只需要使用继承就可以实现的非常简单的模式,严重依赖抽象类的设计模式。
核心概念: 主要分为抽象父类(封装了子类的算法框架,包括实现一些公关方法以及封装子类中所有方法的执行顺序),与实现子类(继承这个抽象类,也继承了整个算法结构,并且可以选择重写父类的方法)。
子类实现中的想法部分被上移到父类中,而讲不同的部分留给子类自己去实现。
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();