6. 一分钟读懂“抽象工厂模式”

6.1 模式介绍

 书接上文,工厂方法模式只能搞定单一产品族,遇到需要生产多个产品族时就歇菜了。于是,在需求的“花式鞭策”下,程序员们再次绷紧脑细胞,创造出了更强大的抽象工厂模式,让工厂一次性打包多个产品族,效率拉满!

6.2 实现要素

抽象工厂模式关注的是多个产品族的创建,其实现3要素包括:n个产品接口、m个产品实现类(m>=n)、1个工厂接口,n个创建产品族的具体工厂实现类。

6.3 场景案例

抽象工厂模式就像电脑品牌的配件供应链,专门负责生产统一的产品组合。

  • 产品接口CPUGPU 是配件的通用规范,比如 CPU.process() 负责计算,GPU.render() 负责图形渲染。

  • 产品实现类:不同品牌提供具体实现,比如 IntelCPUIntelGPU 注重高性能,AMDCpuAMDGpu 强调性价比。

  • 工厂接口ComputerPartsFactory 规定每个品牌都必须实现 createCPU()createGPU(),确保接口一致。

  • 具体工厂IntelFactory 专门生产 Intel 系列配件,AMDFactory 打造 AMD 系列配件,保证全套兼容性。

客户端就像在选择整套电脑配件,调用 createCPU()createGPU() 等方法来从工厂中获得一整套相关的产品。只需要挑选品牌(Intel 或 AMD),工厂帮你搭配好,免去兼容性烦恼!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/933432.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数仓技术hive与oracle对比(五)

附录说明 附录是对测试过程中涉及到的一些操作进行记录和解析。 oracle清除缓存 alter system flush shared_pool; 将使library cache和data dictionary cache以前保存的sql执行计划全部清空,但不会清空共享sql区或者共享pl/sql区里面缓存的最近被执行的条目。刷…

CEEMDAN-CPO-VMD二次分解(CEEMDAN+冠豪猪优化算法CPO优化VMD)

CEEMDAN-CPO-VMD二次分解(CEEMDAN冠豪猪优化算法CPO优化VMD) 目录 CEEMDAN-CPO-VMD二次分解(CEEMDAN冠豪猪优化算法CPO优化VMD)效果一览基本介绍程序设计参考资料 效果一览 基本介绍 首先运用CEEMDAN对数据进行一次分解&#xff…

UG NX二次开发(Python)-UIStyler-选取点

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 1、前言2、设计一个UI界面3、创建长方体的代码4、需要引入的库5、测试验证1、前言 采用Python语言进行UG NX二次开发的资料比较少,我本来不是很认可采用Python进行二次开发的,但是近期有读者咨询…

后端-时间格式问题的解决办法

方法一:在需要的地方直接加 方法二:在全局写一个springmvc的消息转换器类

哪款云手机适合多开?常用云手机功能对比

在全球化和数字化时代,云手机以其独特的灵活性和高效性,成为多账号运营和数字营销的热门工具。云手机能够解决传统设备管理的诸多痛点,例如账号关联、硬件成本高等问题。本文将为您推荐多款优质云手机品牌,帮助您选择最适合的工具…

Qt 小项目 学生管理信息系统

主要是对数据库的增删查改的操作 登录/注册界面: 主页面: 添加信息: 删除信息: 删除第一行(支持多行删除) 需求分析: 用QT实现一个学生管理信息系统,数据库为MySQL 要求&#xf…

第三部分:进阶概念 7.数组与对象 --[JavaScript 新手村:开启编程之旅的第一步]

第三部分:进阶概念 7.数组与对象 --[JavaScript 新手村:开启编程之旅的第一步] 在 JavaScript 中,数组和对象是两种非常重要的数据结构,它们用于存储和组织数据。尽管它们都属于引用类型(即它们存储的是对数据的引用而…

Redis设计与实现读书笔记

目录 Redis设计与实现[^1]第一部分:数据结构与对象简单动态字符串SDS的基础定义与C字符串的差别常数获取长度杜绝缓冲区溢出减少修改字符串时带来的内存重分配次数二进制安全函数兼容 链表链表和链表节点的实现 字典字典的实现哈希表定义哈希表节点定义字典定义 哈希…

笔记04--零基础创建个人本地大模型知识库ollama+Dify

ollma安装 官网下载直接下一步下一步即可,没有魔法的朋友可以留言,文章中所用到的文件也给打包了,大家可以直接下载使用通过云盘下载使用。 链接: https://pan.baidu.com/s/12zF9MpQtg1bnMDAQayaSyg 提取码: n9rm 官网地址:http…

基于Springboot的校园交友网站设计与实现

1.1 管理信息系统概述 管理信息系统是计算机在信息管理领域的一种实用技术。通过运用管理科学、数学和计算机应用的原理及方法,在符合软件工程规范的原则下,形成一套完整的理论和方法体系。是一个以人、计算机和其他外部设备组成的可以进行信息的收集、…

Vue智慧商城项目

创建项目 vue组件库 — vant-ui(常用于移动端) Vant 2 - 轻量、可靠的移动端组件库 安装vant npm i vantlatest-v2 -S 引入组件 按需导入和全部导入 全部导入 整个组件库的所有组件都导进来,缺点是增加了代码包体积 main.js import…

灵途科技亮相2024世界传感器大会 分享光纤光源技术突破

12月1日至2日,2024世界传感器大会(WSS)在郑州国际会展中心隆重举办,泛自动驾驶领域光电感知专家灵途科技受邀参加“光纤传感器与激光雷达”分论坛,并在大会上带来《激光雷达用一体化光纤光源》专题演讲,同与…

【kotlin 】内联类(value class / inline class)

官方文档:https://kotlinlang.org/docs/inline-classes.html 注:inline class 关键字已经被废弃,取而代之的是value class。现在使用内联类需要定义类为value class,并使用JvmInline注解进行标注。 一、使用场景 有时候&#xff…

基于LSTM的A股股票价格预测系统(torch) :从数据获取到模型训练的完整实现

1. 项目简介 本文介绍了一个使用LSTM(长短期记忆网络)进行股票价格预测的完整系统。该系统使用Python实现,集成了数据获取、预处理、模型训练和预测等功能。 这个代码使用的是 LSTM (Long Short-Term Memory) 模型,这是一种特殊的…

【python自动化五】接口自动化基础--requests的使用

python的接口请求可以用requests库,这个介绍就不多说了,网上说得很详细。 接下来直接记录下如何使用(当然也不限于自动化的使用) 1.安装requests requests也需要安装一下 pip install requests2.requests请求 1.常用的请求方法…

【NLP 5、深度学习的基本原理】

目录 一、梯度下降算法 1.引例 —— 找极小值问题 目标: 方法: 2.梯度 例: 3.求解目标 为什么损失函数越小越好 4.梯度下降法 代码实现 5.细节问题 6.梯度爆炸和梯度消失 梯度爆炸 梯度消失 7.过拟合和欠拟合 欠拟合(Underfitting…

DAY168内网对抗-基石框架篇单域架构域内应用控制成员组成用户策略信息收集环境搭建

知识点: 1、基石框架篇-单域架构-权限控制-用户和网络 2、基石框架篇-单域架构-环境搭建-准备和加入 3、基石框架篇-单域架构-信息收集-手工和工具 1、工作组(局域网) 将不同的计算机按照功能分别列入不同的工作组。想要访问某个部门的资源,只要在“…

MATLAB 建筑顶面面积计算(95)

MATLAB 建筑顶面面积计算(95) 一、算法介绍二、算法实现1.代码2.结果一、算法介绍 根据给出的建筑顶面点云,计算建筑面积,具体的方法实现和结果如下: 二、算法实现 1.代码 代码如下(示例): % 从 PLY 文件读取点云数据 filename = D:\shuju\屋顶2.ply; % 替换为你的…

Mac M1 安装数据库

1. Docker下载 由于Sqlserver和达梦等数据库,不支持M系列的芯片,所以我们通过docker安装 下载并安装docker: https://www.docker.com/get-started/ 安装完成后,打开docker 2. SQL Server 安装 2.1 安装 打开终端,执行命令 doc…

二十(GIT3)、echarts(折线图、柱状图、饼图)、黑马就业数据平台(主页图表实现、闭包了解、学生信息渲染)

1. echarts 数据可视化:将数据转换为图形,数据特点更加突出 echarts:一个基于 JavaScript 的开源可视化图表库 echarts官网 1.1 echarts核心使用步骤 // 1. 基于准备好的dom,初始化echarts实例 const myChart echarts.init…