工厂方法模式

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接口交互,具体使用哪个工厂可以从配置中获取。当需要增加新的车型时,只需增加新的具体产品和对应的具体工厂,而不需要修改现有代码。
相关推荐
具身智能进化论17 小时前
具身智能率先进入汽车工厂,产业价值将从哪些场景显现?
大数据·人工智能·机器人·自动化·工厂方法模式
具身智能进化论1 天前
国产协作机器人品牌如何选择,企业长期使用更看重什么
大数据·人工智能·机器人·工厂方法模式
具身智能进化论3 天前
协作机器人产业进入规模化部署期,未来几年的增长从何而来
大数据·运维·人工智能·机器人·自动化·工厂方法模式
AI人工智能+电脑小能手4 天前
大白话说Java设计模式-04-工厂方法模式(业务实战篇)
java·设计模式·工厂方法模式·架构设计·代码解耦
莫得感情 o11 天前
设计模式 03 · 工厂方法模式
设计模式·工厂方法模式
choumin18 天前
创建型模式——工厂方法模式
c++·设计模式·工厂方法模式·创建型模式
geovindu1 个月前
java: Factory Method Pattern
java·开发语言·后端·设计模式·工厂方法模式·创建型模式
王_teacher2 个月前
23种设计模式之工厂模式
设计模式·软件工程·简单工厂模式·工厂方法模式·抽象工厂模式
计算机安禾3 个月前
【c++面向对象编程】第39篇:简单工厂模式与工厂方法模式:C++实现
c++·简单工厂模式·工厂方法模式
多加点辣也没关系3 个月前
设计模式-工厂方法模式
设计模式·工厂方法模式