简单易学的js设计模式-模版方法模式

模版方法模式

定义:模板方法模式由二部分组成,第一部分是抽象父类,第二部分是具体实现的子类,
    一般的情况下是抽象父类封装了子类的算法框架,包括实现一些公共方法及封装子类中
    所有方法的执行顺序,子类可以继承这个父类,并且可以在子类中重写父类的方法,
    从而实现自己的业务逻辑。

使用场景:
  1. 泡饮品(茶 和 coffee)
  2. 公司面试(百度面试 和 阿里面试)

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模板方法模式

本文标题:
js设计模式-模版方法模式 文章作者:
余真帆-fanerge 发布时间:2017年11月01日 – 20:11 最后更新:2017年11月01日 – 21:11 原始链接:
fanerge.github.io/2017/11/01/…

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

坚持技术分享,您的支持将鼓励我继续创作! ————-本文结束
fanerge在此感谢您的阅读————-

    原文作者:算法小白
    原文地址: https://juejin.im/entry/59f9d6cf518825619a020244
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞