工厂方法模式

1. 工厂方法模式 (Factory Method Pattern)

定义:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。

核心思想:让子类来决定创建哪个具体对象,而不是在父类中直接指定。

场景:当一个类不知道它所必须创建的对象的类的时候。

实例代码:假设我们要创建一个生产不同类型汽车的系统。

java 复制代码
// 1. 产品接口 (Product)
interface Car {
    void drive();
}

// 2. 具体产品 (Concrete Product)
class SedanCar implements Car {
    @Override
    public void drive() {
        System.out.println("Driving a Sedan Car.");
    }
}

class SUVCar implements Car {
    @Override
    public void drive() {
        System.out.println("Driving an SUV Car.");
    }
}

// 3. 抽象工厂 (Creator)
interface CarFactory {
    Car createCar();
}

// 4. 具体工厂 (Concrete Creator)
class SedanCarFactory implements CarFactory {
    @Override
    public Car createCar() {
        System.out.println("Creating a Sedan Car...");
        return new SedanCar();
    }
}

class SUVCarFactory implements CarFactory {
    @Override
    public Car createCar() {
        System.out.println("Creating an SUV Car...");
        return new SUVCar();
    }
}

		
// 5. 客户端 (Client)
public class FactoryMethodDemo {
    public static void main(String[] args) {
		// 假设我们通过某种配置(例如读取配置文件或命令行参数)
		// 决定当前要使用哪种类型的汽车工厂
		String carTypeConfig = "sedan";
		
		// 创建
		CarFactory factory;
		if ("sedan".equals(carTypeConfig)) {
			factory = new SedanCarFactory(); // 这里仍然需要实例化具体工厂
		} else if ("suv".equals(carTypeConfig)) {
			factory = new SUVCarFactory();
		} else {
			throw new IllegalArgumentException("Unknown car type config: " + carTypeConfig);
		}
		
		// 使用
		Car car = sedanFactory.createCar();
        car.drive();
    }
}

解释

  • Car是产品接口。
  • SedanCarSUVCar是具体产品。
  • CarFactory是抽象工厂,定义了createCar()方法。
  • SedanCarFactorySUVCarFactory是具体工厂,它们实现了createCar()方法,并分别负责创建SedanCarSUVCar
  • 客户端代码只需要与CarFactory接口交互,具体使用哪个工厂可以从配置中获取。当需要增加新的车型时,只需增加新的具体产品和对应的具体工厂,而不需要修改现有代码。
相关推荐
apolloyhl6 天前
工厂方法模式
工厂方法模式
Geoking.14 天前
【设计模式】工厂方法模式(Factory Method)详解:从简单工厂到真正的“面向扩展”
设计模式·工厂方法模式
Jerry404_NotFound19 天前
工厂方法模式
java·开发语言·jvm·工厂方法模式
有一个好名字1 个月前
设计模式-工厂方法模式
java·设计模式·工厂方法模式
会员果汁1 个月前
5.设计模式-工厂方法模式
设计模式·工厂方法模式
Poetinthedusk1 个月前
设计模式-工厂模式
设计模式·工厂方法模式
淼淼7631 个月前
工厂方法模式
开发语言·c++·windows·qt·工厂方法模式
ZouZou老师1 个月前
C++设计模式之工厂方法模式:以家具生产为例
c++·设计模式·工厂方法模式
phdsky1 个月前
【设计模式】工厂方法模式
c++·设计模式·工厂方法模式