Java 工厂方法模式

1. 简介

工厂方法模式是一种创建型设计模式,用于通过工厂类创建对象,而不是直接调用对象的构造方法。它将对象的创建和使用分离,使得代码更加灵活、可维护和可扩展。

2. 流程图

flowchart TD
    subgraph 创建对象
        A(创建工厂接口)
        B(创建具体工厂类)
        C(创建产品接口)
        D(创建具体产品类)
    end
    subgraph 使用对象
        E(使用工厂创建对象)
        F(调用产品对象方法)
    end
    A --> B
    B --> C
    C --> D
    E --> B
    F --> D

3. 实现步骤

步骤 代码 注释
1 public interface Factory { } 创建工厂接口类
2 public class ConcreteFactory implements Factory { } 创建具体工厂类
3 public interface Product { } 创建产品接口类
4 public class ConcreteProduct implements Product { } 创建具体产品类
5 public class Client { } 创建客户端类,用于使用工厂创建对象

3.1 创建工厂接口类(Factory)

public interface Factory {
    public Product createProduct();
}

3.2 创建具体工厂类(ConcreteFactory)

public class ConcreteFactory implements Factory {
    public Product createProduct() {
        return new ConcreteProduct();
    }
}

3.3 创建产品接口类(Product)

public interface Product {
    public void doSomething();
}

3.4 创建具体产品类(ConcreteProduct)

public class ConcreteProduct implements Product {
    public void doSomething() {
        // 具体产品的实现逻辑
    }
}

3.5 创建客户端类(Client)

public class Client {
    public static void main(String[] args) {
        Factory factory = new ConcreteFactory();
        Product product = factory.createProduct();
        product.doSomething();
    }
}

4. 序列图

sequenceDiagram
    participant Client
    participant ConcreteFactory
    participant Factory
    participant ConcreteProduct
    participant Product

    Client ->> Factory: createProduct()
    Factory ->> ConcreteFactory: createProduct()
    ConcreteFactory ->> ConcreteProduct: new ConcreteProduct()
    ConcreteProduct -->> Factory: ConcreteProduct
    Factory -->> Client: ConcreteProduct
    Client ->> Product: doSomething()
    Product -->> ConcreteProduct: doSomething()

5. 总结

工厂方法模式通过引入工厂类,将对象的创建过程封装起来。客户端只需要通过工厂类来创建对象,而无需关心具体的实现细节。这样做的好处是使得代码更加灵活,可以根据需要切换不同的具体产品类,同时也符合面向对象设计的开闭原则。如果需要新增一种产品,只需要创建相应的具体产品类和工厂类即可,不需要修改现有的代码。

希望这篇文章能够帮助你理解和使用Java工厂方法模式。