模板方法模式
小于 1 分钟约 286 字
- 模板方法模式由两部分组成,第一部分是抽象父类,第二部分是具体的实现子类。通常在抽象父类中封装了子类的算法逻辑,包括实现一些公共方法以及封装子类中所有方法的执行顺序。子类通过继承这个抽象类,也继承了整个算法结构,并且可以选择重写父类的方法。
var Container = function (params = {}) {
var F = function () {}
F.prototype.init = async function () {
var list = await this.getData()
this.render(list)
}
F.prototype.getData =
params.getData ||
function () {
throw new Error('必须传入getData')
}
F.prototype.render = function (list) {
console.log('render', list)
}
return F
}
var Myclass = Container({
getData() {
console.log('获取nowplaying')
return [1, 2, 3]
},
})
new Myclass().init()
模板方法模式是一种典型的通过封装变化提高系统扩展性的设计模式。运用了模板方法模式的程序中,子类方法种类和执行顺序都是不变的,但是子类的方法具体实现规则是可变的。父类是个模板,子类可以添加,就增加了不同的功能。