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工厂方法模式。