工厂模式是一种创建型设计模式,其主要目标是提供一个统一的接口来创建对象,而不必指定其具体类。工厂模式将对象的实例化过程抽象出来,使得客户端代码不需要知道实际创建的具体类,只需通过工厂接口或方法来获取所需的对象。
工厂模式通常包括以下几个角色:
工厂模式的优点包括:
工厂模式的缺点包括:
// 抽象产品
class Product {
constructor(name) {
this.name = name;
}
}
// 具体产品A
class ConcreteProductA extends Product {
constructor() {
super('ProductA');
}
}
// 具体产品B
class ConcreteProductB extends Product {
constructor() {
super('ProductB');
}
}
// 抽象工厂
class Factory {
createProduct() {
// 定义创建产品的接口
}
}
// 具体工厂A
class ConcreteFactoryA extends Factory {
createProduct() {
return new ConcreteProductA();
}
}
// 具体工厂B
class ConcreteFactoryB extends Factory {
createProduct() {
return new ConcreteProductB();
}
}
// 客户端代码
const factoryA = new ConcreteFactoryA();
const productA = factoryA.createProduct();
console.log(productA.name); // 输出: ProductA
const factoryB = new ConcreteFactoryB();
const productB = factoryB.createProduct();
console.log(productB.name); // 输出: ProductB