抽象工厂模式
定义:抽象工厂模式是指当有多个抽象角色时,使用的一种工厂模式。抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体的情况下,创建多个产品族中的产品对象
优点:1. 它分离了具体的类
2. 它使得易于交换产品系列
3. 它有利于产品的一致性
缺点:难以支持新种类的产品
代码
注解:由于抽象工厂比较适合比较大型的项目,贴合 vue 实际操作也没有想到合适的使用,所以使用了周边的业务场景来实现一个简单的抽象工厂,下面我们来看 todoList 的抽象类,里面它会检测是否有客户使用了它本身,如果使用了它的本身则抛出一个错误,然后创建了两个具体的产品类日常工作的 todoList 和学习的 todoList,并且继承基类 todoList,并对它进行覆盖实现
// 抽象产品(todoList)class todoList {constructor () {if (new.target === todoList) {throw new Error('抽象类不能实例化')
}
}
}
/**
* 具体产品类
*/
// 创建工作
class dailyWork extends todoList{constructor (name) {super()
this.name = name
}
create () {console.log('日常工作', this.name)
}
}
// 创建学习
class study extends todoList{constructor (name) {super()
this.name = name
}
create () {console.log('学习', this.name)
}
}
// 使用
function use(type) {switch (type) {
case 'work':
return dailyWork
break;
case 'study':
return study
break;
}
}
let dailyWork1 = use('work')
let study1 = use('study')
let newWork = new dailyWork1('添加虚拟号')
let newStudy = new study1('vue')
newWork.create() // 学习 vue
newStudy.create() // 日常工作 添加虚拟号