当前位置: 首页 > article >正文

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

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();
    }
}

http://www.kler.cn/a/405856.html

相关文章:

  • 深度学习笔记24_天气预测
  • 51单片机--- 矩阵按键仿真
  • Mac M4苹果电脑M4上支持的AE/PR/PS/AI/ID/LrC/AU/DC/ME有哪些?
  • 【大模型】docker部署glm-4-9b-chat,并部署到服务器上
  • DHECDH密钥交互算法
  • 金融数据中心容灾“大咖说” | 英方软件的“分而治之”之道
  • YOLOv11来了,使用YOLOv11训练自己的数据集和预测 (保姆级无代码操作版)
  • 智象未来(HiDream.ai)技术赋能,开启AR眼镜消费时代
  • 【通俗理解】边际化技巧在概率论中的应用真的广泛吗? ——从理论到实践的全面探索
  • bug 就像隐藏在暗处的小怪兽
  • 优化注意力层提升 Transformer 模型效率:通过改进注意力机制降低机器学习成本
  • 在 Ubuntu 上安装 MinIO 并设置密码
  • SQL 语句执行计划中的连接方式
  • 端口port常识
  • 为什么有HTTP还要RPC
  • 向量数据库FAISS之三:FAISS 索引
  • 测试人员--如何区分前端BUG和后端BUG
  • CSS基础学习练习题
  • STM32-- 串口介绍
  • 彻底理解Redis的过期策略