推荐答案
// www.javascriptcn.com code example
class Product {
constructor(name) {
this.name = name;
}
display() {
console.log(`Product: ${this.name}`);
}
}
class ProductFactory {
createProduct(name) {
return new Product(name);
}
}
// 使用工厂模式创建产品
const factory = new ProductFactory();
const productA = factory.createProduct('Product A');
const productB = factory.createProduct('Product B');
productA.display(); // 输出: Product: Product A
productB.display(); // 输出: Product: Product B本题详细解读
1. 工厂模式的定义
工厂模式是一种创建型设计模式,它提供了一种创建对象的方式,而无需指定具体的类。通过使用工厂模式,客户端代码可以避免直接实例化对象,而是通过工厂方法来创建对象。
2. 代码结构
- Product类:这是一个简单的产品类,具有一个
name属性和一个display方法,用于显示产品的名称。 - ProductFactory类:这是一个工厂类,包含一个
createProduct方法,用于创建Product类的实例。
3. 使用工厂模式的好处
- 解耦:客户端代码不需要知道具体的产品类,只需要通过工厂方法来创建对象,从而实现了客户端代码与具体产品类的解耦。
- 扩展性:如果需要添加新的产品类型,只需扩展工厂类,而不需要修改客户端代码。
- 代码复用:工厂方法可以集中管理对象的创建逻辑,避免代码重复。
4. 适用场景
- 当创建对象的逻辑比较复杂时,可以使用工厂模式来封装这些逻辑。
- 当需要根据不同的条件创建不同的对象时,工厂模式可以提供灵活的解决方案。
- 当希望客户端代码与具体类解耦时,工厂模式是一个很好的选择。
5. 注意事项
- 工厂模式可能会导致类的数量增加,因为每个产品类都需要一个对应的工厂类。
- 如果产品类的创建逻辑非常简单,使用工厂模式可能会显得过于复杂,此时可以直接使用
new关键字来创建对象。