工厂方法模式

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接口交互,具体使用哪个工厂可以从配置中获取。当需要增加新的车型时,只需增加新的具体产品和对应的具体工厂,而不需要修改现有代码。
相关推荐
BD_Marathon2 天前
工厂方法模式
android·java·工厂方法模式
青春易逝丶2 天前
工厂方法模式
工厂方法模式
逆境不可逃8 天前
【从零入门23种设计模式01】创建型之工厂模式(简单工厂+工厂方法+抽象工厂)
java·spring·设计模式·简单工厂模式·工厂方法模式·抽象工厂模式·工厂模式
Remember_9931 个月前
Java 工厂方法模式:解耦对象创建的优雅方案
java·开发语言·python·算法·工厂方法模式
她和夏天一样热1 个月前
【设计模式】工厂方法模式在开发中的真实应用
设计模式·工厂方法模式
进击的小头1 个月前
创建型模式:工厂方法模式(C语言实现)
c语言·工厂方法模式
小码过河.1 个月前
设计模式——工厂方法模式
设计模式·工厂方法模式
sg_knight1 个月前
工厂方法模式(Factory Method)
java·服务器·python·设计模式·工厂方法模式·工厂模式
apolloyhl2 个月前
工厂方法模式
工厂方法模式