前端设计模式(7)--模板方法模式

58 阅读1分钟

一, 定义

模板方法模式是一种只需使用继承就可以实现的非常简便的模式

由两部分组成, 一种是抽象父类, 一种是具体子类.

抽象父类封装了子类的算法框架,包括一些公用的方法以及子类中所有方法的执行顺序.

具体子类通过继承这个抽象父类,也继承了整个算法框架,并且可以选择重写父类的方法.

二, 场景和实现

// 模板方法
// 抽象父类(模板)
const People = function () {};
People.prototype.learn = function () {
  throw new Error('子类必须实现的方法');
};
People.prototype.work = function () {
  throw new Error('子类必须实现的方法');
};
People.prototype.play = function () {
  throw new Error('子类必须实现的方法');
};
People.prototype.init = function () {
  this.learn();
  this.work();
  this.play();
};

// 具体子类
const Girl = function () {};
// 实现继承关系(继承关系必须确立在实现父类方法之前)
Girl.prototype = new People();
Girl.prototype.learn = function () {
  console.log('girl learn');
};
Girl.prototype.work = function () {
  console.log('girl work');
};
Girl.prototype.play = function () {
  console.log('girl play');
};

const Boy = function () {};
Boy.prototype = new People();

Boy.prototype.learn = function () {
  console.log('Boy learn');
};
Boy.prototype.work = function () {
  console.log('Boy work');
};
Boy.prototype.play = function () {
  console.log('Boy play');
};

const girl = new Girl();
const boy = new Boy();

girl.init();
boy.init();

三, 总结

模板方法就是Java中的抽象类与实现类的关系.