抽象工厂模式
定义:抽象工厂模式是指当有多个抽象角色时,使用的一种工厂模式。抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体的情况下,创建多个产品族中的产品对象
优点:
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() // 日常工作 添加虚拟号
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。