Bootstrap

设计模式-创建型-工厂模式

1.概念

由多个不同的工厂来替我们完成生产对象的操作,不同的工厂生产不同的对象

2.作用

不再会违背OCP原则,要添加新的产品类会相应添加对应的工厂类,不会修改到已有工厂的代码。
调用者不再关心产品的创建,实现职责分离

3.应用场景

对象的创建步骤比较复杂,可以用工厂来进行封装。
希望隐藏对象创建的具体实现
需要解耦对象的使用和创建过程

4.特点

对象的创建与使用代码解耦
使用工厂来获取对象,而不是构造器

5.类与对象关系

5.1类图

在这里插入图片描述

5.2说明

在工厂模式中我们会有四种角色:

  • 抽象产品:所有具体产品的接口,决定这些产品共有的特性或行为
  • 具体产品:具体的产品,就是我们客户端实际要使用的对象
  • 抽象工厂:所有工厂类的接口
  • 具体工厂:每个具体产品都有对应的具体工厂类

6.实现

// 抽象产品类
interface Vehicle {
    void drive();
}
 
// 具体产品类:汽车
class Car implements Vehicle {
    @Override
    public void drive() {
        System.out.println("Driving a car.");
    }
}
 
// 具体产品类:自行车
class Bicycle implements Vehicle {
    @Override
    public void drive() {
        System.out.println("Riding a bicycle.");
    }
}
 
// 工厂类
class VehicleFactory {
    // 根据类型创建对应的交通工具对象
    public static Vehicle createVehicle(String type) {
        if (type.equals("car")) {
            return new Car();
        } else if (type.equals("bicycle")) {
            return new Bicycle();
        } else {
            throw new IllegalArgumentException("Unknown vehicle type: " + type);
        }
    }
}
 
// 客户端代码
public class FactoryPatternDemo {
    public static void main(String[] args) {
        Vehicle car = VehicleFactory.createVehicle("car");
        car.drive();
 
        Vehicle bicycle = VehicleFactory.createVehicle("bicycle");
        bicycle.drive();
    }
}
;