设计模式 - 工厂方法模式
在简单工厂模式中,所有对象的创建都由一个工厂类负责。这虽然方便,但当你新增产品类型时,往往不得不修改工厂类的代码,违反了“开放-封闭原则”。为了解决这个问题,工厂方法模式(Factory Method Pattern)应运而生。
- 定义一个“工厂接口”,用于创建产品。
- 每种产品都有自己的“工厂类”负责生产。
- 客户端不直接创建产品,只通过工厂来获取。
你不再需要修改工厂逻辑,而是通过扩展(新增一个工厂类)来支持新的产品。
核心思想 🌟
将“产品的创建”延迟到具体的工厂子类中进行。
Java 实现
// 产品接口
interface Shape {
void draw();
}
// 具体产品
class Circle implements Shape {
public void draw() {
System.out.println("Drawing Circle");
}
}
class Square implements Shape {
public void draw() {
System.out.println("Drawing Square");
}
}
// 工厂接口
interface ShapeFactory {
Shape createShape();
}
// 具体工厂
class CircleFactory implements ShapeFactory {
public Shape createShape() {
return new Circle();
}
}
class SquareFactory implements ShapeFactory {
public Shape createShape() {
return new Square();
}
}
// 使用
public class Main {
public static void main(String[] args) {
ShapeFactory factory = new CircleFactory();
Shape shape = factory.createShape();
shape.draw(); // 输出:Drawing Circle
}
}