前面理解了工厂模式,抽象工厂模式建立在工厂模式之上,简单的来讲就是当有很多工厂时候,对工厂进行统一管理
先把之前的工厂拿过来
class Dog {call() {console.log("小狗 汪 汪 汪")}}class Cat {call() {console.log("小猫 喵 喵 喵")}}class Pig {call() {console.log("小猪 哼 哼 哼")}}class AnimalFactory {getAnimal(animal) {switch(animal) {case: "DOG":return new Dog();case "CAT":return new Cat();case "PIG":return new Pig();default:return null;}}}
现在我们创建了动物工厂,世界上只有动物会导致生态不平衡,所以我们创建人类工厂,吃一些猪emmm…….
class Student {eat() {console.log("学生吃东西")}}class Teacher {eat() {console.log("老师吃东西")}}class Developer {eat() {console.log("程序员吃东西")}}
看过工厂模式的我们知道,我们还可以创建一个工厂来管理
class PersionFactory {getPersion(job) {switch(job) {case "STUDENT":return new Student();case "TEACHER":return new Teacher();case "DEVELOPER":return new Developer();default:return null;}}}
人类工厂有了,但是以后工厂会越来越多,这时候就得想个办法去管理,还是走之前的套路,在工厂之上在创建一个工厂,通过工厂抽象工厂
class FactoryProducer {static getFactory(factory) {switch(factory) {case "ANIMAL":return new AnimalFactory();case "PERSION":return new PersionFactory();default:return null}}}
这时我们就可以通过工厂拿到抽象工厂了
const Persion = FactoryProducer.getFactory("PERSION")const teacher = Persion.getPersion("TEACHER")teacher.run()const Animal = FactoryProducer.getFactory("ANIMAL")const pig = Animal.getAnimal("pig")pig.call()
