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

5. 一分钟读懂“工厂方法模式”

5.1 模式介绍

你可能会发现,简单工厂模式没在经典设计模式里出现,别急,它其实只是个常用的编程技巧,而不是标准的设计模式。简单工厂模式有三个要素:1个产品接口、n个产品类、1个工厂类,工厂类通过if/else来选择创建哪个产品。听起来挺简单,但问题是一旦你想新增产品,就得修改工厂类,违反了“开闭原则”。

为了避免这种麻烦,聪明的程序员们发明了工厂方法模式。它为每个产品创建一个独立的工厂类,这样一来,新增产品时无需改动现有代码,系统的灵活性和可扩展性大大增强。简单来说,工厂方法模式就是给每个产品都配个“专属经纪人”,新增产品时只需要加新经纪人,其他一切照旧。

5.2 实现要素

工厂方法模式关注的是单一产品族的创建,其实现3要素包括:1个产品接口、n个产品实现类、1个工厂接口,n个工厂实现类。

5.3 场景案例

工厂方法模式就像交通工具生产线,每个工厂负责生产一种交通工具:

  • 产品接口(Vehicle:所有交通工具(如自行车和汽车)都实现 drive() 方法,这样每种交通工具都能“开”或者“骑”。

  • 产品类(CarBike

    • Car 实现了 Vehicle 接口,表示汽车的 drive() 方法。
    • Bike 也实现了 Vehicle 接口,表示自行车的 drive() 方法。
  • 工厂接口(VehicleFactory:定义了一个方法 createVehicle(),用于创建交通工具对象,具体是汽车还是自行车,由具体工厂来决定。

  • 具体工厂类(CarFactoryBikeFactory

    • BikeFactory 实现 createVehicle() 方法,负责生产 Bike 类(自行车)。
    • CarFactory 实现 createVehicle() 方法,负责生产 Car 类(汽车)。

客户端像选车一样,挑选自己需要的工厂(比如汽车工厂或者自行车工厂),然后通过调用 createVehicle() 方法得到对应的产品。只管开车或骑车,不用知道工厂如何制造,简单又高效!

 

http://www.lryc.cn/news/498956.html

相关文章:

  • 基于 AutoFlow 快速搭建基于 TiDB 向量搜索的本地知识库问答机器人
  • C语言学习:速通指针(2)
  • windows 上ffmpeg编译好的版本选择
  • Java设计模式笔记(二)
  • Vue CLI的作用
  • 短视频矩阵系统开发|技术源代码部署
  • Erlang socket编程(二)
  • 工业检测基础-线扫相机和面阵相机参数及应用
  • 【无标题】建议用坚果云直接同步zotero,其他方法已经过时,容易出现bug
  • 基于STM32设计的智能宠物喂养系统(华为云IOT)_273
  • cesium truf 利用缓冲如何将一个点缓冲成一个方形
  • HarmonyOS 5.0应用开发——Ability与Page数据传递
  • 【推荐算法】推荐系统的评估
  • 鸿蒙:实现类似Android.9图的图片资源呈现
  • ros2人脸检测
  • Pillow:强大的Python图像处理库
  • 微信小程序uni-app+vue3实现局部上下拉刷新和scroll-view动态高度计算
  • 为什么类 UNIX 操作系统通常内置编译器?为什么 Windows 更倾向于直接使用二进制文件?
  • 吉林大学23级数据结构上机实验(第7周)
  • 实验13 使用预训练resnet18实现CIFAR-10分类
  • 【开发文档】资源汇总,持续更新中......
  • 【k8s实践】 创建第一个Pod(Nginx)
  • 盘古大模型实战
  • Python subprocess.run 使用注意事项,避免出现list index out of range
  • 包管理器npm,cnpm,yarn和pnpm
  • 树莓派4B使用opencv读取摄像头配置指南
  • Spring Boot 进阶话题:部署
  • Python 3 和 MongoDB 的集成使用
  • perl语言中模式匹配的左右关系
  • 【漏洞复现】网动统一通信平台(ActiveUC)接口iactiveEnterMeeting存在信息泄露漏洞