模板方法模式 📖
定义
模板方法模式(Template Method Pattern),一种只需使用继承就可以实现的非常简单的模式。模板方法模式由两部分结构组成,第一部分是抽象父类,第二部分是具体的实现子类。通常在抽象父类中封装了子类的算法框架,包括实现一些公共方法以及封装子类中所有方法的执行顺序。子类通过继承这个抽象类,也继承了整个算法结构,并且可以选择重写父类的方法。
好莱坞原则
允许底层组件将自己挂钩到高层组件中,而高层组件会决定什么时候、以何种方式去使用这些底层组件,高层组件对待底层组件的方式,是“别调用我们,我们会调用你”。
实现
js
class Datastore {
connect() {
throw new Error('子类必须重写')
}
select() {
throw new Error('子类必须重写')
}
disconnect() {
throw new Error('子类必须重写')
}
process() {
this.connect()
this.select()
this.disconnect()
return true
}
}
class MySQL extends Datastore {
constructor() {
super()
}
connect() {
console.log('MySQL: connect step')
}
select() {
console.log('MySQL: select step')
}
disconnect() {
console.log('MySQL: disconnect step')
}
}
class Mongodb extends Datastore {
constructor() {
super()
}
connect() {
console.log('Mongdb: connect step')
}
select() {
console.log('Mongdb: select step')
}
disconnect() {
console.log('Mongdb: disconnect step')
}
}
const mySql = new MySQL()
mySql.process()
const mongodb = new Mongodb()
mongodb.process()