设计模式之工厂模式

简介: 简单工厂模式 简单工厂其实不算是一个真正的“模式”,反而像一种编程习惯。如下面披萨的简单工厂类图:披萨商店将生产披萨的任务交给披萨工厂,只负责获取从工厂返回的披萨对象即可。 工厂模式 工厂方法模式定义 工厂方法模式定义了一个创建对象的接口,但由子类决定到底要实例化的类是哪一个。

简单工厂模式

简单工厂其实不算是一个真正的“模式”,反而像一种编程习惯。
如下面披萨的简单工厂类图:
在这里插入图片描述
披萨商店将生产披萨的任务交给披萨工厂,只负责获取从工厂返回的披萨对象即可。

工厂模式

工厂方法模式定义

工厂方法模式定义了一个创建对象的接口,但由子类决定到底要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。
类图如下:
在这里插入图片描述

抽象工厂模式定义

抽象工厂模式提供一个接口,用来创建相关或依赖对象的家族,而不需要明确指定具体类。
类图如下:
在这里插入图片描述

用披萨的例子来看 如下:
在这里插入图片描述
简单工厂模式
简单工厂其实不算是一个真正的“模式”,反而像一种编程习惯。
如下面披萨的简单工厂类图:
在这里插入图片描述
披萨商店将生产披萨的任务交给披萨工厂,只负责获取从工厂返回的披萨对象即可。

工厂模式
工厂方法模式定义
工厂方法模式定义了一个创建对象的接口,但由子类决定到底要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。
类图如下:
在这里插入图片描述

抽象工厂模式定义
抽象工厂模式提供一个接口,用来创建相关或依赖对象的家族,而不需要明确指定具体类。
类图如下:
image

相关文章
|
Web App开发 测试技术 API
Playwright 测试报告中显示的标签和注释。
Playwright 测试报告中显示的标签和注释。
253 57
|
数据可视化 数据挖掘 API
探索Seaborn的魅力:Python高手教你如何轻松玩转数据可视化
【8月更文挑战第22天】Seaborn是基于Matplotlib的Python数据可视化库,提供高级接口简化复杂统计图表的创作。与Pandas兼容,便于绘制多样图表。需先安装Seaborn:`pip install seaborn`。示例涵盖散点图、条形图、箱线图及热力图等常见类型,利用内置数据集如Iris和Tips展示不同图表功能。Seaborn以其简洁API和定制能力,助力高效完成数据分析可视化任务。
97 0
|
新零售 大数据
全民拼团商城新零售系统开发|模式分析|详情方案
新零售是线上线下的结合,组合的价值主要是线下线上引流
|
存储 Java API
Java 进阶集合Set、Map(二)
Java 进阶集合Set、Map
227 0
Java 进阶集合Set、Map(二)
|
SQL XML 算法
程序员收藏夹里的常用网站,快来围观
程序员收藏夹里的常用网站,快来围观
403 0
程序员收藏夹里的常用网站,快来围观
|
Java 机器人 Linux
【2. 操作系统—中断、异常、系统调用】
🌗1. 启动 作用解析 Disk : 存放OS和Bootloader BIOS : 基于I/O处理系统(主要是计算机开机后,能够检查各种外设,然后加载软件执行) Bootloader : 加载OS,将OS从磁盘放入内存 注意:os最开始不是放到内存中的,而是放到disk(硬盘)中,由bios提供支持 开机流程 BIOS 开机后,寻找显卡和执行BIOS (此时, CS : IP = 0xF000 : 0xFFF0, CS/IP 两个寄存器) 将Bootloader从磁盘的引导扇区加载到0x7C00 (Bootloader一共占用512M字节的内存) 跳转到 CS : IP = 0
303 0
【2. 操作系统—中断、异常、系统调用】
|
机器学习/深度学习 存储 人工智能
5300亿!巨型语言模型参数每年暴涨10倍,新「摩尔定律」要来了?(下)
近年来,大型语言模型参数量每年暴增10倍,最近的巨无霸模型MT-NLG,参数更是达到了5300亿!关于模型参数的「新摩尔定律」已呼之欲出。不过,这可不一定是好事。
325 0
5300亿!巨型语言模型参数每年暴涨10倍,新「摩尔定律」要来了?(下)
|
机器学习/深度学习 人工智能 自然语言处理
AAAI 2020 论文解读:关于生成模型的那些事
提到生成模型,每个人首先要考虑的问题应该都是这两个——生成什么,如何生成。本文介绍的三篇论文就包含了三种生成模型(GNN、RL、VAE,即怎么生成),同时也介绍了这些生成模型各自当前的应用场景(场景图生成、序列生成、任务型对话生成,即生成什么)。
380 0
AAAI 2020 论文解读:关于生成模型的那些事
|
存储 负载均衡 监控
Flink 使用大状态时的一点优化
RocksDB 是基于 LSM 树原理实现的 KV 数据库,LSM 树读放大问题比较严重,因此对磁盘性能要求比较高,强烈建议生产环境使用 SSD 作为 RocksDB 的存储介质。但是有些集群可能并没有配置 SSD,仅仅是普通的机械硬盘,当 Flink 任务比较大,且对状态访问比较频繁时,机械硬盘的磁盘 IO 可能成为性能瓶颈。在这种情况下,该如何解决此瓶颈呢?
Flink 使用大状态时的一点优化
|
物联网 Shell AliOS-Things
远程AIoT教育科研平台LinkLab
当前,物联网应用开发过程普遍存在缺少硬件上手难、技术繁杂开发难、场景复杂部署难等痛点。本文介绍远程AIoT教育科研平台LinkLab,初步探讨物联网开发、教学和实训等方面的集成解决方案。平台由阿里巴巴-浙江大学前沿技术联合研究中心(AZFT)和杭州开物教育科技有限公司联合研发。
4064 0
远程AIoT教育科研平台LinkLab