设计模式深度解析:工厂模式(Factory Pattern)及其应用实践
1. 工厂模式简介
工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式,而无需暴露对象创建的逻辑。工厂模式主要分为三种类型:
- 简单工厂模式:通过一个工厂类根据传入的参数决定创建哪种产品类的实例。
- 工厂方法模式:定义一个创建对象的接口,但由子类决定实例化哪个类。
- 抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们的具体类。
2. 代码示例
简单工厂模式示例
interface Product {
void use();
}
class ConcreteProductA implements Product {
@Override
public void use() {
System.out.println("使用产品A");
}
}
class ConcreteProductB implements Product {
@Override
public void use() {
System.out.println("使用产品B");
}
}
class SimpleFactory {
public static Product createProduct(String type) {
if ("A".equals(type)) {
return new ConcreteProductA();
} else if ("B".equals(type)) {
return new ConcreteProductB();
}
return null;
}
}
工厂方法模式示例
interface Factory {
Product createProduct();
}
class FactoryA implements Factory {
@Override
public Product createProduct() {
return new ConcreteProductA();
}
}
class FactoryB implements Factory {
@Override
public Product createProduct() {
return new ConcreteProductB();
}
}
抽象工厂模式示例
interface AbstractFactory {
ProductA createProductA();
ProductB createProductB();
}
class ConcreteFactory1 implements AbstractFactory {
@Override
public ProductA createProductA() {
return new ConcreteProductA1();
}
@Override
public ProductB createProductB() {
return new ConcreteProductB1();
}
}
3. 应用场景:电商平台商品创建
假设我们有一个电商平台,需要根据用户的选择动态创建不同类型的商品(如电子产品、服装、食品等)。使用工厂模式可以灵活地扩展商品类型,而无需修改客户端代码。
实现步骤
- 定义商品接口和具体商品类。
- 创建工厂类,根据商品类型返回对应的商品实例。
- 客户端通过工厂类获取商品对象,无需关心具体实现。
4. 总结
工厂模式通过封装对象的创建过程,提高了代码的灵活性和可维护性。在实际开发中,合理使用工厂模式可以显著降低代码的耦合度。