随笔记:模板模式方法 之 冲泡饮料 案例
代码实现
/*
模板方法模式--冲泡饮料
流程: 1.把水煮沸
2.用沸水冲泡饮料
3.把饮料倒进杯子里
4.加调料
思路:1.共用的方法父类中定义
2.不同的方法,子类中定义
结论:在该例子中,Beverage.prototype.init被成为模板方法,原因是该方法封装了子类的算法框架,
它作为一个算法的模板,指导子类以何种顺序去执行哪些方法。在Beverage.prototype.init方法
中,算法内的每一个步骤都清楚地展示在我们眼前。
【注】实现下面例子,高阶函数也是个很好的选择
*/
// 定义一个 抽象父类
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();
};
// 创建coffee子类
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();//把水煮沸-->用水冲泡咖啡 --> 把咖啡倒进杯子里-->加糖和牛奶
// 创建tea 子类
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();//把水煮沸-->用水浸泡茶叶-->把茶倒进杯子里-->加柠檬
Life is just a sum of our choices.
生活,是由我们每一个选择构成的。
- Work towards your choices 朝着你的选择努力!