6. 一分钟读懂“抽象工厂模式”
6.1 模式介绍
书接上文,工厂方法模式只能搞定单一产品族,遇到需要生产多个产品族时就歇菜了。于是,在需求的“花式鞭策”下,程序员们再次绷紧脑细胞,创造出了更强大的抽象工厂模式,让工厂一次性打包多个产品族,效率拉满!
6.2 实现要素
抽象工厂模式关注的是多个产品族的创建,其实现3要素包括:n个产品接口、m个产品实现类(m>=n)、1个工厂接口,n个创建产品族的具体工厂实现类。
6.3 场景案例
抽象工厂模式就像电脑品牌的配件供应链,专门负责生产统一的产品组合。
产品接口:
CPU
和GPU
是配件的通用规范,比如CPU.process()
负责计算,GPU.render()
负责图形渲染。产品实现类:不同品牌提供具体实现,比如
IntelCPU
和IntelGPU
注重高性能,AMDCpu
和AMDGpu
强调性价比。工厂接口:
ComputerPartsFactory
规定每个品牌都必须实现createCPU()
和createGPU()
,确保接口一致。具体工厂:
IntelFactory
专门生产 Intel 系列配件,AMDFactory
打造 AMD 系列配件,保证全套兼容性。客户端就像在选择整套电脑配件,调用
createCPU()
和createGPU()
等方法来从工厂中获得一整套相关的产品。只需要挑选品牌(Intel 或 AMD),工厂帮你搭配好,免去兼容性烦恼!
相关文章:
6. 一分钟读懂“抽象工厂模式”
6.1 模式介绍 书接上文,工厂方法模式只能搞定单一产品族,遇到需要生产多个产品族时就歇菜了。于是,在需求的“花式鞭策”下,程序员们再次绷紧脑细胞,创造出了更强大的抽象工厂模式,让工厂一次性打包多个产品…...
(四)lerobot开源项目的主从臂的远程操作(带相机)(操作记录)
目录 《项目简介》 一、B站视频参考(推荐) 二、确定两个usb相机的端口号 三、远程操作(带相机) 四、遇到问题 《项目简介》 项目地址:GitHub - huggingface/lerobot: 🤗 LeRobot: Making AI for Ro…...
离线安装ollama到服务器
搜了很多教程不满意,弄了半天才弄好,这里记录下,方便以后的人用,那个在线下载太慢,怕不是得下载到明年。 一.从官网下在liunx版的tgz安装包 Releases ollama/ollama (github.com) 查看自己的服务器信息(参考 https:/…...
Vue前端开发-多级路由配置
在Vue 路由数组中,允许配置多级的路由对象结构,可以是二级、三级或者更多级别,最大级别原则上没有限制,但通常最大的是三或四级,这种路由结构,称之为多级路由。 例如:一级路由地址/list&#x…...
Yocto bitbake and codeSonar
1 mdm 1.1 屏蔽mdm sysvinit的console输出 - uboot传入参数的时候传入consolenull,这样Linux启动信息没有了 - 还需要在Linux配置中去掉Support for console on AMBA serial port - 文件系统/etc/inittab文件里注释掉::respawn:/sbin/getty -L ttyS000 115200 vt100…...
sheng的学习笔记-【中】【吴恩达课后测验】Course 5 -序列模型 - 第二周测验 - 自然语言处理与词嵌入
课程5_第2周_测验题 目录 第一题 1.假设你为10000个单词学习词嵌入,为了捕获全部范围的单词的变化以及意义,那么词嵌入向量应该是10000维的。 A. 【 】正确 B. 【 】错误 答案: B.【 √ 】错误 第二题 2.什么是t-SNE?…...
数字图像处理内容详解
1.对比度 最大亮度 / 最小亮度 2.邻域 m邻接:对于像素p和q,如果p和q四临接,或p和q八临接且两者的四邻域的交集为空 通路:如果俩点全部是K邻接(K代表4,8,m),则说明存在K…...
python通过ODBC连接神通数据库
1、安装神通数据库 2、安装python 3、安装pyodbc pip3 install pyodbc-5.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl 注:pyodbc要和python版本相对应 4、安装unixodbc 5、配置神通数据库ODBC数据源 6、示例代码如下 #!/usr/bin/python…...
QNX的PPS发布/订阅模型
参考资料: QNX官方文档 以下摘自官网介绍: TheQNX NeutrinoPersistent Publish/Subscribe (PPS) service is a small, extensible publish/subscribe service that offers persistence across reboots. It’s designed to provide a simple and easy-to-use solution for b…...
Ubuntu——extrepo添加部分外部软件源
extrepo 是一个用于 Ubuntu 和其他基于 Debian 的系统的工具,它的主要作用是简化和管理外部软件源(repositories)的添加和更新。通过使用 extrepo,用户可以方便地添加、删除和管理第三方软件源,而不需要手动编辑源列表…...
java基础教程第16篇( 正则表达式)
Java 正则表达式 正则表达式定义了字符串的模式。 正则表达式可以用来搜索、编辑或处理文本。 正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。 Java 提供了 java.util.regex 包,它包含了 Pattern 和 Matcher 类,用于处理正…...
【Shell 脚本实现 HTTP 请求的接收、解析、处理逻辑】
以下是一个实现客户端对 Shell HTTP 服务发起 POST 请求并传入 JSON 参数的完整示例。Shell 服务会解析收到的 JSON 数据,根据内容执行操作。 服务端脚本:http_server.sh 以下脚本使用 netcat (nc) 来监听 HTTP 请求,并通过 jq 工具解析 JSO…...
Leetcode 每日一题 290.单词规律
目录 一、问题分析 二、解题思路 三、代码实现 四、复杂度分析 五、总结 在编程的世界里,我们常常会遇到各种有趣的字符串匹配问题。今天要探讨的就是这样一个问题:给定一种规律 pattern 和一个字符串 s,判断 s 是否遵循与 pattern 相同…...
图像滤波和卷积的不同及MATLAB应用实例
滤波与卷积在图像处理中都是非常重要的运算,但它们有着明显的区别。以下是滤波与卷积的主要不同点,并附带一个MATLAB实例来展示两者在图像处理中的效果差异。 一、滤波与卷积的不同 定义与目的: 1)滤波:滤波是一种信…...
【AI模型对比】AI新宠Kimi与ChatGPT的全面对比:技术、性能、应用全揭秘
文章目录 Moss前沿AI技术背景Kimi人工智能的技术积淀ChatGPT的技术优势 详细对比列表模型研发Kimi大模型的研发历程ChatGPT的发展演进 参数规模与架构Kimi大模型的参数规模解析ChatGPT的参数体系 模型表现与局限性Kimi大模型的表现ChatGPT的表现 结论:如何选择适合自…...
详细解读CMA实验室认可
CMA实验室认可,即中国计量认证(China Metrology Accreditation)的实验室资质认定,以下是对其的详细解读: 一、定义与目的 CMA认证是经省级以上人民政府计量行政部门对实验室的计量检定、测试能力和可靠性考核合格后进…...
H5与支付宝小程序通信,调起扫一扫
1.public/index.html加入代码 <script>if (navigator.userAgent.indexOf(AliApp) > -1) {document.writeln(<script src"https://appx/web-view.min.js" > < / script>);}window.$my my </script>2.vue其他具体页面加入代码 metho…...
Lighthouse(灯塔)—— Chrome 浏览器性能测试工具
1.认识 Lighthouse Lighthouse 是 Google 开发的一款开源性能测试工具,用于分析网页或 Web 应用的性能、可访问性、最佳实践、安全性以及 SEO 等关键指标。开发人员可以通过 Lighthouse 快速了解网页的性能瓶颈,并基于优化建议进行改进。 核心功能&…...
深入浅出机器学习中的梯度下降算法
大家好,在机器学习中,梯度下降算法(Gradient Descent)是一个重要的概念。它是一种优化算法,用于最小化目标函数,通常是损失函数。梯度下降可以帮助找到一个模型最优的参数,使得模型的预测更加准…...
AIGC 012-Video LDM-更进一步,SD作者将LDM扩展到视频生成任务!
AIGC 012-Video LDM-Stable Video diffusion前身,将LDM扩展到视频生成任务! 文章目录 0 论文工作1论文方法实验结果 0 论文工作 Video LDM作者也是Stable diffusion的作者,作者在SD的架构上进行扩展,实现了视频的生成。后续在Vid…...
Rust常用命令总结
安装Rust 检查并更新Ubuntu的软件包 $ sudo apt update $ sudo apt upgrade安装相关依赖:安装GCC、G、MAKE、curl $ sudo apt install build-essential $ sudo apt install curl安装Rust $ curl --proto https --tlsv1.2 -sSf https://sh.rustup.rs | sh执行命令…...
docker部署RustDesk自建服务器
客户端: Releases rustdesk/rustdesk GitHub 服务端: 项目官方地址:GitHub - rustdesk/rustdesk-server: RustDesk Server Program 1、拉取RustDesk库 docker pull rustdesk/rustdesk-server:latest 阿里云库: docker pu…...
QT4和 QT5 槽函数连接的区别
正常连接方式 //QT4官方用列QLabel *label new QLabel;QScrollBar *scrollBar new QScrollBar;QObject::connect(scrollBar, SIGNAL(valueChanged(int)),label, SLOT(setNum(int)));//QT5官方用列QLabel *label new QLabel;QLineEdit *lineEdit new QLineEdit;QObject::c…...
【C++】入门【六】
本节目标 一、继承的概念及定义 二、基类和派生类对象赋值转换 三、继承中的作用域 四、派生类的默认成员函数 五、继承与友元 六、继承与静态成员 七、复杂的菱形继承及菱形虚拟继承 八、继承的总结和反思 九、笔试面试题 一、继承的概念及定义 1.继承的概念 继承是面向对象…...
Ansible 运维工具
安装 apt install ansible /etc/ansible/hosts , 指定密码或密钥访问分组机器 [k8s_masters] master0.c0.k8s.sb[k8s_nodes] node0.c0.k8s.sb node1.c0.k8s.sb[k8s:children] k8s_masters k8s_nodes[k8s_masters:vars] ansible_ssh_usersbadmin ansible_ssh_pass"***&q…...
【分布式】分布式缓存
一、什么是分布式缓存 分布式缓存是一种将缓存数据存储在多个节点上的缓存方案。它通过将数据分散存储在多个节点的内存中,以提高系统的读取性能、降低数据库压力和提高系统可扩展性。 二、分布式缓存的优点 优点明细提高性能:分布式缓存可以将数据缓…...
uni-app简洁的移动端登录注册界面
非常简洁的登录、注册界面模板,使用uni-app编写,直接复制粘贴即可,无任何引用,全部公开。 废话不多说,代码如下: login.vue文件 <template><view class"content"><view class&quo…...
传奇996_47——前端ui
方式一: 后端写ui,前端通过触发函数进行截取。然后获取标签名进行补充或附加动画 这种方式很好用。 问题1:获取不到标签名,标签名就是标签id,当id数字时不需要处理即可直接获取到,但是id如果时汉字就会获取…...
nlp培训重点
1. SGD梯度下降公式 当梯度大于0时,变小,往左边找梯度接近0的值。 当梯度小于0时,减去一个负数会变大,往右边找梯度接近0的值,此时梯度从负数到0上升 2.Adam优化器实现原理 #coding:utf8import torch import torch.n…...
ARM A32多数据处理汇编指令理解分享
ARM A32多数据处理汇编指令理解分享 1 多数据存储指令1.1 push指令1.2 STMFD/STMDB指令1.3 STMED/STMDA指令1.4 STMFA/STMIB指令1.5 STMEA/STMIA指令 2 多数据加载指令2.1 pop指令2.2 LDMFD/LDMIA指令2.3 LDMFA/LDMDA指令2.4 LDMEA/LDMDB指令2.5 LDMED/LDMIB指令 在ARM A32多数…...
【人工智能】Transformers之Pipeline(二十七):蒙版生成(mask-generation)
目录 一、引言 二、蒙版生成(mask-generation) 2.1 概述 2.2 facebook/sam-vit-base 2.3 pipeline参数 2.3.1 pipeline对象实例化参数 2.3.2 pipeline对象使用参数 2.3.3 pipeline对象返回参数 2.4 pipeline实战 2.5 模型排…...
数据挖掘之逻辑回归
逻辑回归(Logistic Regression)是数据挖掘中一种经典且广泛应用的算法,主要用于解决分类问题。尽管名字中带有“回归”,它的核心目标却是预测离散的类别,而不是连续的数值。逻辑回归凭借其简单、高效、易于解释的特性&…...
PH热榜 | 2024-12-05
1. Oopsie 标语:用AI和会话回放调试Flutter和React Native应用 介绍:Zipy推出的Oopsie是一款你唯一需要的AI赋能移动端调试工具,它能提供▶️会话回放、🤖错误监控、💡AI生成的概要分析,以及🔥…...
docker-常用应用部署dockerfile模板
文章目录 概述Springboot-Djava.security.egdfile:/dev/./urandom参数说明 vue应用部署nginx.conf配置Dockerfile 概述 本文列举了Java开发中常用如SpringBoot、Vue前端等类型的应用Docker部署所需的DockerFile Springboot FROM anapsix/alpine-java:8_server-jre_unlimited…...
LabVIEW中“this VI‘s owning library is missing”错误及解决
问题描述 当加载或打开一个VI时,如果其所属的项目库未加载到内存,LabVIEW将提示错误:“this VIs owning library is missing”(该VI的所属库不存在)。 该问题通常发生在以下情况下: 项目库文件丢失或路径…...
【算法】棋盘覆盖问题源代码及精简版
目录 一、题目 二、样例 三、示例代码 四、精简代码 五、总结 对于棋盘覆盖问题的解答和优化。 一、题目 输入格式: 第一行,一个整数n(棋盘n*n,n确保是2的幂次,n<64) 第二行,两个整数…...
剖析kubernetes service的IP能否在宿主机中ping通
文章目录 前言一、serviceIP是怎么产生的二、宿主机中ping serviceIP地址1.ping示例2.为什么ping不通剖析2.1.封装及解封装过程2.2.ICMP报文以太网数据帧格式2.3.原因 三、ping不通svcIP是否跟iptables规则有关?四、为什么ipvs的的clusterIP类型的service能够ping通…...
路由VueRouter的基本使用
1.下载VueRouter到当前工程。 vue2:VueRouter3.x Vuex3.x。 vue3:VueRouter4.x Vuex4.x。 在终端使用命令: year add vue-router3.6.5 2.引入。 import VueRouter from vue-router 3,安装注册。 Vue.use(VueRouter) 4…...
学习记录,正则表达式, 隐式转换
正则表达式 \\:表示正则表达式 W: 表示一个非字(不是一个字,例如:空格,逗号,句号) W: 多个非字 基本组成部分 1.字符字面量: 普通字符:在正则表达式中,大…...
Spring Boot + MySQL 多线程查询与联表查询性能对比分析
Spring Boot MySQL: 多线程查询与联表查询性能对比分析 背景 在现代 Web 应用开发中,数据库性能是影响系统响应时间和用户体验的关键因素之一。随着业务需求的不断增长,单表查询和联表查询的效率问题日益凸显。特别是在 Spring Boot 项目中࿰…...
C++小碗菜之二:软件单元测试
“没有测试的代码重构不能称之为重构,它仅仅是垃圾代码的到处移动” ——Corey Haines 目录 前言 什么是单元测试? 单元测试的组成 单元测试的命名 单元测试的独立性 Google Test 单元测试的环境配置与使用 1. Ubuntu下安装 Google Test 2. 编写…...
集成学习综合教程
一、前置知识 一个分类器的分类准确率在60%-80%,即:比随机预测略好,但准确率却不太高,我们可以称之为 “弱分类器”,比如CART(classification and regression tree 分类与回归树)。 反之&#x…...
Java NIO channel
channel(通道),byteBuffer(缓冲区),selector(io多路复用),通道FileChannel,SocketChannel的transferTo,transferFrom,MappedByteBuffer实现了零拷贝。 JVM调操作系统方法,read,write,都可以送字…...
B3631 单向链表-模拟链表
来源 :题目链接-洛谷 B3631 单向链表 单向链表 题目描述 实现一个数据结构,维护一张表(最初只有一个元素 1 1 1)。需要支持下面的操作,其中 x x x 和 y y y 都是 1 1 1 到 1 0 6 10^6 106 范围内的正整数&…...
【C++】格式化输出详解:掌握 cout 的进阶用法
博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 💯前言💯格式化输出的理论概述💯控制输出宽度和填充字符setw 操作符setfill 操作符 💯控制浮点数的显示格式fixed 与 scientificsetprecision 💯…...
【NoSQL数据库】Hbase基本操作——数据库表的增删改查
目录 一、Hbase原理 二、HBase数据库操作 三、遇到的问题和解决方法 一、Hbase原理 HBase的数据模型: 行键 时间戳 列族:contents 列族:anchor 列族:mime “com.cnn.www” T9 Achor:cnnsi.com”CNN” T8 Achor:…...
同步fifo
同步FIFO FIFO即是一种先进先出的数据缓存器。同步FIFO指的是数据的写入和读出的时钟是同一个时钟。异步 FIFO 有两个时钟信号,读和写逻辑用的各自的读写时钟。 FIFO没有外部读写地址线,使用起来简单。但是缺点就是只能先入先出,数据地址由…...
肌肉骨骼肿瘤治疗市场:潜力无限,未来可期
肌肉骨骼肿瘤治疗作为现代医学的重要分支,专注于应对骨骼和肌肉系统中的良性和恶性肿瘤。随着全球人口老龄化和生活方式的改变,肌肉骨骼疾病日益成为公共卫生的重要问题。与此同时,医疗技术的进步和患者对高质量医疗服务的需求不断推动该市场…...
高考倒计时:用倒计时软件 为梦想加油 可用于教室黑板或者电脑上
高考,这个被无数学子视为人生重要转折点的考试,即将来临。每一年的六月,都充满了紧张与期待。如何在这场人生的战役中取得胜利?除了日常的勤奋学习,科学的复习计划和心态调整外,一款好用的倒计时软件&#…...
人工智能学习用的电脑安装cuda、torch、conda等软件,版本的选择以及多版本切换
接触人工智能的学习三个月了,每天与各种安装包作斗争,缺少依赖包、版本高了、版本低了、不兼容了、系统做一半从头再来了。。。这些都是常态。三个月把单位几台电脑折腾了不下几十次安装,是时候总结一下踩过的坑和积累的经验了。 以一个典型的…...