C++,设计模式,【抽象工厂模式】

【设计模式】【创建型模式(Creational Patterns)】之抽象工厂模式(Abstract Factory Pattern) 工厂方法模式通过定义一个创建对象的接口,但由子类决定实例化哪一个类,从而使得系统更加灵活和可扩展。这种方法不仅遵循了开闭原则(对扩展开放,对修改关闭),还降低了客户端与具体产品之间的耦合度。然而,随着具体产品数量的增加,也会带来更多的具体创造者类,增加了系统的复杂度。因此,在实际应用中需要根据具体情况进行权衡。 阅读详情

在这里插入图片描述


C++设计模式:用“抽象工厂模式”打造你的万能工厂


一、从早餐店说起:什么是抽象工厂?

每天早上,你走进一家早餐店,只需要说一句:“来份经典套餐”,就能得到一杯豆浆+两根油条。第二天你换家店说同样的话,可能得到的是咖啡+牛角包。这两家店就是不同的"抽象工厂",它们都能生产"早餐组合",但具体内容却完全不同。

抽象工厂模式的核心思想:提供一个接口,用于创建一系列相关或依赖的对象,而无需指定它们的具体类。


二、工厂模式的升级版:抽象工厂 vs 简单工厂

1. 简单工厂(小作坊)

// 只能生产单一产品
class 包子工厂 {
   
   
public:
    包子* 制作包子(口味 type) {
   
   
        switch(type) {
   
   
            case 鲜肉: return new 鲜肉包();
            case 豆沙: return new 豆沙包();
        }
    }
};

2. 抽象工厂(连锁集团)

// 能生产整套产品线
class 早餐工厂 {
   
   
public:
    virtual 饮品* 做饮品() = 0;
    virtual 主食* 做主食() = 0;
};

class 中式早餐厂 : public 早餐工厂 {
   
   
    饮品* 做饮品() override {
   
    return new 豆浆(); }
    主食* 做主食() override {
   
    return new 油条(); }
};

class 西式早餐厂 : public 早餐工厂 {
   
   
Centos7.9使用kubeadm部署K8S集群 使用kubeadm部署一个k8s集群,单master+2worker节点。 阅读详情

相关推荐

Halcon相机标定实战:从参数设置到精度优化全解析

本文详细解析Halcon相机标定的全流程,从基础概念到实战技巧,涵盖参数设置、精度优化及常见问题解决方案。通过实际案例和代码示例,帮助读者掌握工业视觉项目中相机标定的关键技术,提升测量精度和系统稳定性。

weixin_29279153的博客 322

【C语言项目合集】这十个入门必备练手项目,让C语言对你来说不再难学!

适合刚入门C语言的编程学习小白的十个练手项目,每个都很经典且实用,让你学完C语言不再迷茫!

kxtxdy的博客 3万+

Linux服务器 离线安装oracle

Linux服务器 离线安装oracle

xie_bro的博客 4260

别再凭感觉了!手把手教你用Excel搞定激光器MPE与NOHD安全计算(附模板下载)

本文详细介绍了如何利用Excel自动化计算激光器的MPE(最大允许照射量)和NOHD(标称眼危害距离),提升激光安全评估的效率和准确性。通过实战案例和模板下载,帮助工程师快速掌握GB/T 7247标准中的关键计算,避免常见错误,适用于激光测距仪等设备的安评工作。

weixin_30954265的博客 468

手动以及使用torch.nn实现前馈神经网络实验

手动以及使用torch.nn实现前馈神经网络 手动实现前馈神经网络解决上述回归、二分类、多分类任务 利用torch.nn解决上述回归、二分类、多分类任务 在多分类任务中使用至少三种不同的激活函数 对多分类任务中的模型评估隐藏层层数和隐藏单元个数对实验结果的影响

m0_52910424的博客 9373

Win10环境借助DockerDesktop部署Open web UI集成DeepSeek

Win10环境借助DockerDesktop部署Open web UI集成DeepSeek,并借助DuckDuckGo实现联网查询

虎鲸不是鱼 1700

平头哥面试——芯片工程师面经

有5个成递增关系的32bit地址值,彼此之间的间隔大小不确定,可以把他们当成parameter来输入模块,现有一个32bit输入数据,要求用尽量少资源去的判断这个数处于哪2个地址之间(地址区间),并且输出区间号。a)后续大概会在9月下旬谈具体的薪资,他们现在也没想好今年应届生的薪资该给多少,到时候如果可以签三方的话可能会跳过意向书环节直接发offer,谈薪资肯定是通过电话来。b. 这边的CPU是自己研制的(玄铁),成都这边主要做存储和网络,都有SOC。a. 成都这边的网络部门具体做的业务有哪些?

FPGA/MATLAB学习教程/源码/项目合作开发 2688

Qt5.15.2配置安卓环境

否则,将会跳转到github,你可以自行下载解压到你设置的目录中,然后Qt会自动检测到。以上所需的工具确实有些繁多,而且如果单独下载又涉及科学上网问题,版本问题十分麻烦,好在Qt Creator 4.12之后已经可以自动下载SDK工具,NDK,基础包,openssl,以及gradle等,十分省心。回到正题,无论通过在线安装的方式,安装时勾选了Android,还是编译的方式,编译时编译了Qt Android库,想要使用Qt开发安卓应用仍然需要一些其他工作,包括安装编译安卓项目需要的SDK,NDK等。

weixin_41392061的博客 979

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

上一篇: 一种基于串口的外置Flash双分区软件升级方案设计
下一篇: STM32上实现简化版的AUTOSAR DEM模块
智驾
博客等级 码龄11年 6671粉丝 574原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智驾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值