抽象工厂模式

定义:抽象工厂模式是指当有多个抽象角色时,使用的一种工厂模式。抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体的情况下,创建多个产品族中的产品对象

优点:
1.它分离了具体的类
2.它使得易于交换产品系列
3.它有利于产品的一致性
缺点:
难以支持新种类的产品

clipboard.png

代码

注解: 由于抽象工厂比较适合比较大型的项目,贴合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() // 日常工作 添加虚拟号

me_zhazha
292 声望6 粉丝