乐趣区

简单抽象工厂

抽象工厂模式

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

优点: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() // 日常工作 添加虚拟号 
退出移动版