工厂模式
通过工厂模式实现对象创建与调用者的解耦
问题
什么是工厂模式,以及它解决了什么问题?
解答
什么是工厂模式
工厂模式提供了一种创建对象的方式,在创建对象时不向客户端暴露创建逻辑,而是通过一个共同的接口来指向新创建的对象。它实现了创建者和调用者的分离。
工厂模式分为三种类型:
简单工厂模式
class Product {
constructor(name) {
this.name = name;
}
}
class SimpleFactory {
static create(type) {
switch(type) {
case 'A':
return new Product('产品A');
case 'B':
return new Product('产品B');
default:
throw new Error('未知产品类型');
}
}
}
// 使用
const productA = SimpleFactory.create('A');
工厂方法模式
class Product {
constructor(name) {
this.name = name;
}
}
class Factory {
createProduct() {
throw new Error('子类必须实现此方法');
}
}
class FactoryA extends Factory {
createProduct() {
return new Product('产品A');
}
}
class FactoryB extends Factory {
createProduct() {
return new Product('产品B');
}
}
// 使用
const factoryA = new FactoryA();
const productA = factoryA.createProduct();
抽象工厂模式
class AbstractFactory {
createProductA() {
throw new Error('子类必须实现此方法');
}
createProductB() {
throw new Error('子类必须实现此方法');
}
}
class ConcreteFactory extends AbstractFactory {
createProductA() {
return new ProductA();
}
createProductB() {
return new ProductB();
}
}
工厂模式的优势
工厂模式用工厂方法代替 new 操作来实例化对象,带来以下好处:
- 降低程序的耦合性,调用者不需要知道具体的实现类
- 统一管理对象的创建逻辑,便于后期维护和修改
- 将对象创建和使用分离,符合单一职责原则
关键点
- 工厂模式将对象创建逻辑封装起来,调用者无需关心具体实现
- 用工厂方法代替
new操作,降低代码耦合性 - 分为简单工厂、工厂方法、抽象工厂三种类型
- 便于统一管理和控制对象的创建过程
目录