# 工厂模式

工厂模式是最常见的用于描述一类对象的方法。

工厂模式的主要目的是将对象的创建过程与使用过程分离,从而提高代码的灵活性和可扩展性。

# 简单工厂

简单工厂模式是最简单的工厂模式实现方式。它包含一个静态工厂方法,根据传入的参数来决定创建哪个具体类的实例并返回该实例。

class Dog {
  speak() {
    return "Woof!";
  }
}

class Cat {
  speak() {
    return "Meow!";
  }
}

class AnimalFactory {
  static getAnimal(animal) {
    if (animal === "dog") {
      return new Dog();
    } else if (animal === "cat") {
      return new Cat();
    }
  }
}

// 使用简单工厂模式创建对象
const dog = AnimalFactory.getAnimal("dog");
console.log(dog.speak()); // 输出: Woof!

const cat = AnimalFactory.getAnimal("cat");
console.log(cat.speak()); // 输出: Meow!

# 抽象工厂

抽象工厂模式提供了一组相关的或相互依赖的对象的接口,而无需指定它们具体的类。它通常用于创建多个相关产品的对象。

class Dog {
  speak() {
    return "Woof!";
  }
}

class Cat {
  speak() {
    return "Meow!";
  }
}

class AnimalFactory {
  createDog() {}
  createCat() {}
}

class DogFactory extends AnimalFactory {
  createDog() {
    return new Dog();
  }

  createCat() {
    return new Cat();
  }
}

// 使用抽象工厂模式创建对象
const dogFactory = new DogFactory();
const dog = dogFactory.createDog();
console.log(dog.speak()); // 输出: Woof!

const cat = dogFactory.createCat();
console.log(cat.speak()); // 输出: Meow!