模版方法模式
定义:模板方法模式由二部分组成,第一部分是抽象父类,第二部分是具体实现的子类,一般的情况下是抽象父类封装了子类的算法框架,包括实现一些公共方法及封装子类中所有方法的执行顺序,子类可以继承这个父类,并且可以在子类中重写父类的方法,从而实现自己的业务逻辑。
使用场景:
- 泡饮品(茶 和 coffee)
- 公司面试(百度面试 和 阿里面试)
IT公司面试
下面就以IT公司面试作为父类,百度面试作为子类来实现面试流程模版方法。
(1.笔试 >> 2.技术面试 >> 3.领导面试 >> 4.等offer)
定义父类
let ITInterview = function(){};
|
笔试
ITInterview.prototype.writtenTest = function(){ console.log("某公司笔试测试"); };
|
技术面试
ITInterview.prototype.technicalInterview = function(){ console.log("某公司技术面试测试"); };
|
领导面试
ITInterview.prototype.leader = function(){ console.log("某公司leader来面试了"); };
|
等offer
ITInterview.prototype.waitNotice = function(){ console.log("某公司的offer到了"); };
|
定义模版方法
作用:封装了子类的算法框架,包括实现一些公共方法及封装子类中所有方法的执行顺序。
ITInterview.init = function(){ this.writtenTest(); this.technicalInterview(); this.leader(); this.waitNotice(); };
|
定义子类(百度面试)
首先子类需要重父类哪里继承所有的方法:
let BaiDuInterview = function(){}; BaiDuInterview.prototype = new ITInterview();
|
百度笔试
BaiDuInterview.prototype.writtenTest = function(){ console.log("百度公司笔试测试"); };
|
百度技术面试
BaiDuInterview.prototype.technicalInterview = function(){ console.log("百度公司技术面试测试"); };
|
百度领导面试
BaiDuInterview.prototype.leader = function(){ console.log("百度公司leader来面试了"); };
|
等offer
BaiDuInterview.prototype.waitNotice = function(){ console.log("百度公司的offer到了"); };
|
测试执行
let baiduInterview = new BaiDuInterview(); baiduInterview.init();
|
依次输出:
百度公司笔试测试
百度公司技术面试测试
百度公司leader来面试了
百度公司的offer到了
参考文档:
JS设计模式之模板方法
JavaScript:设计模式之模板方法
javascript模板方法模式
- end -