一, 定义
模板方法模式是一种只需使用继承就可以实现的非常简便的模式
由两部分组成, 一种是抽象父类, 一种是具体子类.
抽象父类封装了子类的算法框架,包括一些公用的方法以及子类中所有方法的执行顺序.
具体子类通过继承这个抽象父类,也继承了整个算法框架,并且可以选择重写父类的方法.
二, 场景和实现
// 模板方法
// 抽象父类(模板)
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中的抽象类与实现类的关系.