设计模式深度解析:工厂模式(Factory Pattern)及其应用实践

61 阅读2分钟

设计模式深度解析:工厂模式(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. 应用场景:电商平台商品创建

假设我们有一个电商平台,需要根据用户的选择动态创建不同类型的商品(如电子产品、服装、食品等)。使用工厂模式可以灵活地扩展商品类型,而无需修改客户端代码。

实现步骤

  1. 定义商品接口和具体商品类。
  2. 创建工厂类,根据商品类型返回对应的商品实例。
  3. 客户端通过工厂类获取商品对象,无需关心具体实现。

4. 总结

工厂模式通过封装对象的创建过程,提高了代码的灵活性和可维护性。在实际开发中,合理使用工厂模式可以显著降低代码的耦合度。