c++之抽象工厂模式

设计模式:抽象工厂模式C++实现 文章目录前言1. 抽象工厂模式理解2. C++实现抽象工厂模式总结 前言 今天复习了抽象工厂模式,之前复习了简单工厂模式和工厂方法模式,它们实现的功能都是一样的:为了封装对象的创建过程。如果大家对简单工厂模式和工厂方法模式不熟悉,可以看下之前的文章: 简单工厂模式:https://blog.youkuaiyun.com/DU_YULIN/article/details/119778822 工厂方法模式:https://blog.youkuaiyun.com/DU_YULIN/article/details/119821207 阅读详情

抽象工厂模式和工厂方法模式类似,因此也被称为工厂家族模式,属于创建型设计模式。

定义:提供一个创建一系列相关或者相互依赖对象的接口,而无需指定他们具体的类。

以下的例子说明:

市场上有神奇公司和希望公司,他们同时可以生产鼠标和电池,但是两个公司的鼠标和电池型号却是不一样的。

IMouseProduct(抽象鼠标产品)

IBatteryProduct(抽象电池产品)

-----------------------------------------------------------------

MagicBattery(神奇公司具体电池产品)

MagicMouse(神奇公司具体鼠标产品)

HopeBattery(希望公司具体电池产品)

HopeMouse(希望公司具体鼠标产品)

---------------------------------------------------------------

IFactory(抽象工厂)

MagicFactory(神奇公司工厂-生产神奇鼠标和电池)

HopeFactory(希望公司工厂-生产希望鼠标和电池)

代码:

#include <iostream>

using namespace std;

//抽象鼠标
class IMouseProduct{
public:
	virtual void createMouse() = 0;
};

//抽象电池
class IBatteryProduct{
public:
	virtual void createBattery() = 0;
};

//神奇公司电池
class MagicBattery :public IBatteryProduct
{
public:
	virtual void createBattery(){
		cout << "生产神奇电池" << endl;
	}
};

//神奇公司鼠标
class MagicMouse :public IMouseProduct
{
public:
	virtual void createMouse(){
		cout << "生产神奇鼠标" << endl;
	}
};

//希望公司电池
class HopeBattery :public IBatteryProduct
{
public:
	virtual void createBattery(){
		cout << "生产希望电池" << endl;
	}
};

//希望公司鼠标
class HopeMouse :public IMouseProduct
{
public:
	virtual void createMouse(){
		cout << "生产希望鼠标" << endl;
	}
};

//抽象工厂 
class IFactory
{
public:
	virtual IMouseProduct *createMouseProuct() = 0;
	virtual IBatteryProduct *createBatteryProduct() = 0;
};

//神奇工厂 生产鼠标和键盘
class MagicFactory :public IFactory
{
public:
	virtual IMouseProduct *createMouseProuct()
	{
		return new MagicMouse;
	}
	virtual IBatteryProduct *createBatteryProduct()
	{
		return new MagicBattery;
	}
};

//希望工厂 生产鼠标和键盘
class HopeFactory :public IFactory
{
public:
	virtual IMouseProduct *createMouseProuct()
	{
		return new HopeMouse;
	}
	virtual IBatteryProduct *createBatteryProduct()
	{
		return new HopeBattery;
	}
};

//客户端
int main()
{
	//神奇工厂
	//IFactory *fac = new MagicFactory;

	//希望工厂
	IFactory *fac = new HopeFactory;
	if (fac)
	{
		fac->createBatteryProduct()->createBattery();
		fac->createMouseProuct()->createMouse();
		delete fac;
		fac = nullptr;
	}

	return 0;
}

可以看到在客户端中,只需要实例化对应的具体工厂对象给IFactory即可生产不同的产品,不需要改变其他的代码。

突破编程_C++_设计模式(抽象工厂模式) c++ 设计模式:抽象工厂模式 阅读详情

相关推荐

C++设计模式——Abstract Factory Pattern抽象工厂模式

抽象工厂模式是一种创建型设计模式,它提供了一种将相关/依赖对象组合在一起创建的方式,而无需指定它们的具体类。抽象工厂模式与工厂方法模式的区别:工厂方法模式将对象的创建过程延迟到子类中,允许用户通过一个统一的接口来请求他们想要的具体产品,而无需知道产品的具体实现。在这个模式中,工厂类只负责生产同一系列的产品,但具体哪种产品由子类决定。抽象工厂模式更进一步,它提供了一个接口,用于创建一系列相关的或相互依赖的对象,而不是单一对象。

程序员与背包客_CoderZ 1584

C++设计模式(3)——抽象工厂模式

C++设计模式

伍粟的博客 1540

C++抽象工厂模式(Abstract Factory)

AbstractFactory.h: #ifndef ABSTRACT_FACTORY_H_ #define ABSTRACT_FACTORY_H_ ​ #include <memory> #include "AbstractProduct.h" ​ // 抽象工厂类 生产电影和书籍类等 class Factory { public: virtual std::shared_ptr<Movie> productMovie() = 0; virtual std::

我不是码农的博客~~~ 396

c++ 设计模式 --- 抽象工厂模式

抽象工厂模式是所有形态的工厂模式中最为抽象和最一般性的。抽象工厂模式可以向 客户端提供一个接口,使得客户端在不必指定产品的具体类型的情况下,能够创建多个产品族的产品对象。抽象工厂方法是针对与一个产品族,使得易于交换产品系列,只需改变具体的工厂就可以使用不同的产品配置。当一个族中的产品对象被设计成一起工作且一个应用只是用同一族的对象,例如设计系统生成不同风格的UI界面,按钮,边框等UI元素在一起使用,并且只能同属于一种风格,这很容易使用抽象工厂实现。1.提供一个抽象工厂类:声明一组创建一族产品的工厂方法2.提

weixin_60569662的博客 1446

C++实现抽象工厂模式

抽象工厂模式的核心思想是定义一个抽象工厂接口,该接口声明了一组用于创建不同类型产品的方法。然后,针对每个具体的产品族,实现一个具体的工厂类,该工厂类负责创建该产品族中的具体产品。最后,通过使用抽象工厂接口来创建产品对象,从而实现产品的创建与使用的解耦。通过定义抽象工厂接口和具体工厂类,我们可以方便地创建不同类型的产品对象,而无需关心其具体的实现细节。下面是一个示例,展示了如何使用抽象工厂模式创建不同类型的手机和电视产品。,它们分别实现了抽象工厂接口中的方法,并负责创建相应的产品对象。

ByteScript的博客 149

【C++实战㊵】C++抽象工厂模式:解锁高效对象创建的密钥

本文聚焦 C++ 抽象工厂模式实战,先阐释其定义 —— 提供创建相关或依赖对象的接口,无需指定具体类,介绍产品族创建、跨平台开发等适用场景,解析抽象工厂、具体工厂等组成结构。接着给出产品族 A、B 的实现代码,对比其与工厂方法模式,说明产品族扩展方法。还分享退化场景、与依赖注入结合、线程安全处理等实战技巧,最后通过跨平台 UI 组件库项目,展示模式在多平台组件创建与测试中的应用,助力开发者掌握该模式高效创建对象的能力。

邓邓子的博客 1202

C++设计模式——抽象工厂模式

抽象工厂模式的核心目标是提供一个接口,允许客户端通过此接口创建一系列相关或相互依赖的对象,而不必知道具体产生的对象的具体类

qqrrjj2011的博客 1948

C++ 抽象工厂模式

抽象工厂模式(Abstract Factory Pattern)是所有形态的工厂模式中最为抽象和最具一般性的一种形态。抽象工厂模式是指当有多个抽象角色时,使用的一种工厂模式。抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体的情况下,创建多个产品族中的产品对象。

青春不老,奋斗不止! 1万+

C++设计模式:抽象工厂模式(风格切换案例)

抽象工厂模式(Abstract Factory)是一种**创建型设计模式**,其核心思想是:**为一组相关或相互依赖的对象提供一个创建接口,而无需指定它们具体的类**。简单来说,就是一个工厂可以生产一系列相关的对象。

专注于 Qt/C++ 应用开发和机器视觉领域的开源项目分享。期待与您共同进步! 1956

Android应用加固脱壳实战:从爱加密原理到Frida内存Dump与修复

在移动应用安全领域,代码加固与动态加载是保护核心逻辑的关键技术。其原理在于通过修改应用启动流程,将原始DEX加密隐藏,并注入包含解密逻辑的壳DEX,实现运行时动态加载。这项技术的核心价值在于防止应用被逆向分析、二次打包或恶意篡改,广泛应用于金融、游戏等高安全要求场景。对于安全研究、漏洞挖掘或历史版本审计,掌握脱壳技能至关重要。本文聚焦于**爱加密**等主流加固方案,深入探讨如何利用**Frida**框架在内存中精准捕获解密后的DEX数据,并解决脱壳后常见的签名校验等运行问题,提供一套从原理到实践的完整攻防思

weixin_28716443的博客 489

双三相电机控制避坑指南:为什么你的SVPWM谐波大?四矢量调制实战解析

本文深入解析双三相电机控制中SVPWM谐波大的问题,并提供四矢量调制实战方案。通过分析谐波来源、四矢量调制原理及工程实现步骤,显著降低电流THD至3-5%,提升系统效率2.3个百分点。特别适合需要优化电机控制的工程师参考。

weixin_30645617的博客 397

C++ 设计模式——抽象工厂模式

抽象工厂模式提供一个接口,用于创建一系列相关或相互依赖的对象,而无需指定它们的具体类。它通常用于需要创建多个产品族的场景。

慢慢记录,慢慢更新。 2152

为什么AI时代的优秀组织,都在学习Meta的Pod结构?看完秒懂

当AI技术重塑产业格局,企业协作正面临前所未有的挑战——层级繁琐、跨部门内耗、迭代滞后,传统组织模式早已难以跟上技术革新的步伐。作为全球AI原生企业的标杆,Meta独创的Pod组织模式,用“小而美”的自治单元打破困局,成为AI时代高效协作的典范。本文将从定义、运作、价值到未来演进,全面拆解Pod模式,为企业组织变革提供可参考的思路与路径。德鲁克曾说:“组织的功能就是让平凡的人做平凡的事。”而Meta Pod打破这一局限,通过去中心化、指标导向、跨界融合,让优秀人才产生“化学反应”。

Kiss_AIHR的博客 1166

C++抽象工厂模式:Abstract Factory Pattern

案例:在上一章节工厂方法模式的基础上,将披萨的各种原料生产抽象成一个AbstractProduct类(这个抽象的产品类可以有多个)。对于披萨原料生产产品家族(crust工厂、sugar工厂、milk工厂等),每个工厂都有不同的实现。工厂方法模式的具体工厂类只能创建一个具体产品类的实例,而抽象工厂模式可以创建多个。抽象工厂模式的一个优点是把一群相关的产品(披萨的各种原料的不同配方)集合起来。抽象工厂模式:提供接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。抽象工厂模式是工厂方法模式的升级版本,

lichengyang的博客 121

英飞凌 AURIX 系列单片机的HSM详解(1)——何为HSM

1. 概述 随着汽车上通信系统越来越复杂,云端远程通信的场景越来越多,信息安全变得越来越重要,在通信领域常用的AES、SHA、RSA等加密算法被越来越多地应用到汽车上。但通常这类加解密算法都需要大量的数学运算,需要消耗很多CPU时间和资源,汽车上的ECU又有比较高的实时性要求,为了节省主CPU的资源,HSM应运而生。 HSM(Hardware Security Module),是MCU上专门用于实现加解密算法的一个外设,它一般会有一个独立的CPU,专门用来进行加解密运算,还有一些针对特定算法的硬件加速器(如

weixin_42967006的博客 4万+

OpenWebUI外部模型配置异常排查与修复指南

本文详细解析了OpenWebUI外部模型配置异常的常见问题及解决方案,包括隐藏字符、数据库锁死等典型现象。通过错误日志分析和数据库修复实战指南,帮助开发者快速定位并解决配置问题,确保OpenWebUI与第三方大模型的稳定连接。

weixin_29205061的博客 310

C++的抽象工厂模式

抽象工厂模式,提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 C++的抽象工厂模式有如下优势: 1)正如起名字,抽象工厂模式隔离具体类的生产,使客户不需要知道什么被创建。 2)当一个产品族中的多个对象被设计成一起工作时,它能保证客户端始终只使用同一个产品族中的对象。 3)增加新的具体工厂和产品族很方便,无须修改已有系统,符合“开闭原则”。 而缺点是: 增加新的产品等级结构很复杂,需要修改抽象工厂和所有的具体工厂类,对“开闭原则”的支持呈现倾斜性。 下面直接给一个C++实例

fangfanglovezhou的博客 575

基于YOLOv8的多类别检测模型融合实战:从数据集重构到模型训练

本文详细介绍了如何将多个单一类别的YOLOv8检测模型融合为一个高效的多类别检测模型。通过重构数据集、利用预训练模型生成新标签,并重新训练,解决了多模型并行带来的速度慢、资源占用高和部署复杂等问题。实战流程涵盖数据准备、标签生成、模型训练与评估,旨在帮助开发者构建性能优异的YOLOv8多类别检测模型。

kmeans3miner的博客 227

C++实现抽象工厂模式Abstract Factory Pattern

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

优快云er_2015的博客 614

用Playwright MCP让AI帮你完成所有浏览器自动化

Playwright MCP(Model Context Protocol)是微软基于 Playwright 框架推出的 AI 浏览器自动化新协议。它通过结构化快照数据和自然语言指令结合大型语言模型(如 GPT),实现无需编码的网页交互。无论你是要测试登录流程、抓取价格数据,还是用 AI 远程控制浏览器,Playwright MCP 都能大幅降低门槛,让“说人话”也能驱动自动化脚本。本篇将从功能介绍、技术架构、使用方法到实际场景,带你全面理解这一自动化革命。

todoitbo的博客 3万+

当启动容器的时候提示:exec format error?如何解决问题

Docker容器出现"exec format error"的主要原因是架构不兼容(如ARM设备运行x86镜像)。解决方案包括:1)匹配镜像与宿主机架构;2)构建时指定平台;3)安装QEMU模拟器;4)修复文件权限和格式;5)验证基础镜像兼容性。排查流程应从检查架构匹配开始,逐步验证权限、解释器和换行符等问题。建议优先使用多架构镜像,构建时明确指定平台,并使用buildx工具生成多平台镜像。调试时可进入容器手动验证文件格式和兼容性。

weixin_39291964的博客 2717

C++:浅谈工厂模式与抽象工厂模式

C++:浅谈工厂模式与抽象工厂模式标签: C++ 工厂模式 抽象工厂模式by 小威威之前写过一篇谈模式的文章:单例模式接下来我将浅显的谈谈工厂模式与抽象工厂模式。工厂模式与抽象工厂模式虽有差异,但实现的目的可以看成一致的:They offers the interface for creating a family of related objects, without explicitly spe

linwh8的博客 5739

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

C++ 设计模式之抽象工厂模式

1、抽象工厂模式(Abstract Factory Pattern)是一种创建型设计模式,它提供了一种方式来封装一组具有共同主题的单个工厂,而不需要指定它们的具体类。抽象工厂模式允许客户端使用抽象的接口来创建一系列相关或依赖的对象,而不需要指定它们具体的类。2、抽象工厂模式 (Abstract Factory)应用场景包括但不限于:2.1、系统独立于如何创建、组成和表示它的产品 :系统应该对产品类的实现细节和创建过程无需了解。2.2、系统需要多个产品系列中的一个来配置 :可以动态地更改产品系列。

L_qingting的博客 614

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

设计模式——抽象工厂模式(Abstract Factory Pattern)(C++实现)

抽象工厂模式(Abstract Factory Pattern) 介绍 实现 抽象工厂模式(Abstract Factory Pattern) 抽象工厂模式是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象。 介绍 意图:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 主要解决:主要.

zhao_h的博客 206

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

设计模式 C++抽象工厂模式

推荐阅读设计模式 C++工厂方法模式 品牌知名度逐渐提高,不单单只生产一种产品,如果我们继续使用一个工厂对应一种产品,那么假如有三个品牌华为、小米、苹果。他们各自都要三种产品,分别为手机、耳机、笔记本电脑。则此时我们需要创建9个工厂才能实现,类多了代码的实现和维护起来也是非常麻烦的。此时我们就必须引入一种新的模式----抽象方法模式 定义思想:抽象工厂模式是工厂方法模式的泛化版,工厂方法模式是一种特殊的抽象工厂模式。在工厂方法模式中,每一个具体工厂只能生成一种具体产品,而在抽象工厂方法模式中,每一个具体工

WhiteShirtI的博客 393
上一篇: c++之工厂方法模式
下一篇: c++之策略模式
Qt上位机开发
Qt上位机开发 领域专家: C/C++技术领域 领域专家: C/C++技术领域
博客等级 码龄9年 9664粉丝 178原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值