Open LeeeeeeM opened 5 years ago
模板方法模式 这种主要用于一定流程的代码。 比如说Vue的整个初始化以及挂载过程。 有initState、initMethods、initComputed以及穿插在其中的各个钩子。
// 在涉及到多个类似的流程代码的时候,会抽象出公有代码。 // 比如js设计模式所提到的冲泡咖啡和泡茶的过程 // 1、烧开水 // 2、放入咖啡/茶叶 // 3、倒水 // 4、加入辅料 // 其中烧开水和倒水是公共方法可以抽象出来。 // 抽象出一个抽象类或者接口,作用就是让子类实现,本身不实现,抽象类方法执行报错 class DoDrink { boil() { throw new Error(`禁止调用抽象类烧水方法`) } pure() { throw new Error(`禁止调用抽象类倒水方法`) } init() { // 这是一个共有模板方法入口,必须实现。所以我们这个类并不是纯粹的抽象类 this.boil() this.putIn() this.pure() this.putOther() } } class DoTea extends DoDrink { putIn() { console.log(`把茶叶放进杯子`) } putOther() { console.log(`放入柚子`) } } class DoCoffee extends DoDrink { putIn() { console.log(`把咖啡放进杯子`) } putOther() { console.log(`放入牛奶`) } } var dotea = new DoDrink() dotea.init() var docoffee = new DoCoffee() docoffee.init()
职责链模式
这是一种涉及解耦合架构的常用方式
模板方法模式 这种主要用于一定流程的代码。 比如说Vue的整个初始化以及挂载过程。 有initState、initMethods、initComputed以及穿插在其中的各个钩子。