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

设计模式:工厂模式和抽象工厂模式的区别

定义

工厂模式(Factory Pattern)通常指的是工厂方法模式(Factory Method Pattern),它定义了一个创建对象的方法,由子类决定要实例化的类。工厂方法让类的实例化推迟到子类。

抽象工厂模式(Abstract Factory Pattern)提供了一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。抽象工厂允许客户端使用抽象的接口来创建一组相关的产品,而不需要知道(或关心)实际生产的具体产品是什么。

应用场景

工厂方法适用于以下场景:

  • 当一个类不知道它所必须创建的对象的类的时候。
  • 当类希望由其子类来指定创建对象的时候。
  • 当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪个帮助子类是代理者这一信息局部化的时候。

抽象工厂适用于以下场景:

  • 当需要创建的对象是一系列相关或相互依赖的产品族时。
  • 当一个系统要独立于它的产品的创建、组合和表示时。
  • 当你要强调一系列相关的产品对象的设计以便进行联合使用时。
  • 当你提供一个产品类库,而只想显示它们的接口而不是实现时。

示例与反例

工厂方法示例

假设你有一个日志记录器的应用,你想要支持多种日志记录方式,例如文件日志记录和数据库日志记录。你可以创建一个日志记录器接口和实现该接口的多个具体日志记录器。然后定义一个工厂接口,让子类决定实例化哪一个日志记录器。

public interface Logger {void log(String message);
}public class FileLogger implements Logger {public void log(String message) {// 文件日志记录实现}
}public class DatabaseLogger implements Logger {public void log(String message)
http://www.lryc.cn/news/332206.html

相关文章:

  • python面试题(36~50)
  • Vue 样式技巧总结与整理[中级局]
  • cesium加载.tif格式文件
  • 分布式全闪占比剧增 152%,2023 年企业存储市场报告发布
  • LeetCode 707. 设计链表(单链表、(非循环)双链表 模板)
  • 深入了解Flutter中Overlay的介绍以及使用
  • 文本直接生成2分钟视频,即将开源模型StreamingT2V
  • 时序预测 | Matlab实现SOM-BP自组织映射结合BP神经网络时间序列预测
  • FPGA高端图像处理开发板-->鲲叔4EV:12G-SDI、4K HDMI2.0、MIPI等接口谁敢与我争锋?
  • linux练习-交互式传参
  • 【数据结构(一)】初识数据结构
  • 前端三剑客 —— CSS (第六节)
  • MyBatis 解决上篇的参数绑定问题以及XML方式交互
  • Rust语言之属性宏(Attribute Macro)derive
  • [技术闲聊]我对电路设计的理解(六)-原理图封装
  • 算法(滑动窗口四)
  • 学习记录:bazel和cmake运行终端指令
  • 蓝桥杯刷题--python-37-分解质因数
  • Delphi编写的图片查看器
  • Swing中的FlowLayout/WrapLayout在打横排列时候如何做到置顶对齐
  • C# MES通信从入门到精通(8)——C#调用Webservice服务进行数据交互
  • day04-MQ
  • 神经网络汇聚层
  • 2024.3.8力扣每日一题——找出美丽数组的最小和
  • 单例模式以及线程安全问题
  • 车载电子电器架构 —— 软件下载
  • 阿里云弹性计算通用算力型u1实例性能评测,性价比高
  • Jupyter IPython帮助文档及其魔法命令
  • 设计模式总结-面向对象设计原则
  • 绿联 安装zfile,创建属于自己的网盘,支持直链分享