c++之简单工厂模式

C++简单工厂模式 一. 模式中的角色和职责 工厂(Factory)角色:简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。工厂类可以被外界直接调用,创建所需的产品对象。 抽象产品(AbstractProduct)角色:简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。 具体产品(ConcreteProduct)角色:简单工厂模式所创建的具体实例对象。 二. 简单工厂模式案例 #include <iostream> #include <string 阅读详情

目录

简单工厂模式定义

优缺点

代码实现


简单工厂模式定义

它又被叫做静态工厂方法模式,是由一个工厂对象去决定创建出哪一种产品类的实例,

在工厂模式家族中,是最简单但是很实用的模式,

优缺点

优点:根据客户的需要,去动态实例化相关的类,去除了客户对具体产品的依赖。

缺点:每次增加新的功能,就需要去修改现有工厂代码,违反了“开闭原则”。

代码实现

首先需要提供一个抽象产品类,和具体产品的实现类。并需要一个生产的工厂类。

以下以生产酒为场景,介绍简单工厂模式的代码实现。

#include <iostream>

using namespace std;

//酒的抽象接口
class IWine
{
public:
	virtual ~IWine(){}
	virtual void createWine() = 0;
};

//啤酒
class Beer :public IWine
{
public:
	void createWine()
	{
		cout << "生产啤酒" << endl;
	}
};

//白酒
class Spirit :public IWine
{
public:
	void createWine()
	{
		cout << "生产白酒" << endl;
	}
};

//红酒
class RedWine :public IWine
{
public:
	void createWine()
	{
		cout << "生产红酒" << endl;
	}
};

//酒工厂	简单工厂模式
class ProducWineFactory
{
public:
	ProducWineFactory(){}
	~ProducWineFactory()
	{
		if (wine)
		{
			delete wine;
			wine = nullptr;
		}
	}

	IWine * createWine(char type)
	{
		switch (type)
		{
		case 'B':	//啤酒
		{
			wine = new Beer;
		}
		break;
		case 'S':	//白酒
		{
			wine = new Spirit;
		}
		break;
		case 'R':	//红酒
		{
			wine = new RedWine;
		}
		break;
		default:
			break;
		}
		return wine;
	}

private:
	IWine *wine = nullptr;
};

int main()	//客户端
{
	ProducWineFactory wineFactoty;
	IWine *pwine = wineFactoty.createWine('R');
	if (pwine)
	{
		pwine->createWine();
	}

	return 0;
}
C++ 简单工厂模式 简单工厂模式(Simple Factory Pattern)又叫做静态工厂方法模式(Static Factory Method Pattern),属于创建型模式。简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类的实例。 值得注意的是,简单工厂模式并不属于 23 种 GoF 设计模式之一。它是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。 阅读详情

相关推荐

【C++ 设计模式】简单工厂模式

在软件开发中,设计模式是解决特定问题的可复用解决方案。其中,简单工厂模式是一种创建型设计模式,旨在封装对象的创建过程,并将对象的创建与使用分离。这种模式提供了一个统一的接口,用于根据给定的参数或条件创建对象,使得客户端代码无需关心具体对象的创建细节。本文将介绍简单工厂模式的概念、结构以及如何在 C++ 中实现。简单工厂模式是一种简单但有效的设计模式,用于封装对象的创建过程。通过将对象的创建逻辑放在一个工厂类中,客户端代码可以通过统一的接口来请求对象,而无需关心具体对象的创建细节。

m0_62599305的博客 1623

C++设计模式(工厂模式)

简单工厂模式工厂方法模式和抽象工厂模式。工厂模式的作用是生产对象,可以简化代码、提高可维护性,并旦可以通过工厂类生产多种对象。简单工厂模式适用于创建简单的对象,工厂模式适用于创建复杂的对象,而抽象工厂模式适用于创建更复杂的对象。

qq_55882840的博客 2368

c++简单工厂模式

1什么是简单工厂模式 简单工厂模式属于类的创建型模式,又叫做静态工厂方法模式。通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。 2模式中包含的角色及其职责 1.工厂(Creator)角色 简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。工厂类可以被外界直接调用,创建所需的产品对象。 2.抽象(Product)角色 简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。 3.具体产品(Concrete Product)角色 简单工厂模式所创建的具体实例对象

希望我的博客,能帮上你解决学习中工作中所遇到的问题 504

C++设计模式——简单工厂模式

问题描述 之前在公司做了一个windows 8平台的阅读器。首先,需要将电子书中的内容渲染到屏幕上,而电子书每一页都包含各种各样的内容,比如:图形、图像和文字等等;不同的内容,就是不同的对象;在将不同的内容渲染到屏幕上之前,就需要new操作,建立不同的对象,然后再在屏幕上进行描绘。这个时候,就需要进行很多new操作,new操作分布在代码的不同地方,管理起来很麻烦,而且也很乱,到后期扩展和维护的时...

weixin_30567225的博客 413

Chrome红页误报?手把手教你通过Search Console快速解除安全警告

本文详细解析了Chrome红页误报的常见原因及解决方案,重点介绍如何通过Google Search Console快速解除安全警告。内容涵盖误报诊断、技术修复、申诉技巧及长效预防措施,帮助网站管理员有效应对Google Safe Browsing的误判问题,确保网站安全状态快速恢复。

a1b2c的博客 987

VM虚拟机下,通过无线,有线两种方式连接PLC的设置方法

1,VMware软件:编辑>虚拟网络编辑器。 2.右下角:更改设置(如果可以选中“添加网络”选项,则可考虑略过此步) 3.选中VMnet0,点击桥接模式,选中你的物理机有线网卡。点击确定。 4.点击添加网络,我的添加完是VMnet2,然后选中,像上一步样,点击桥接模式,在下拉菜单中选中笔记本的【无线网卡】,然后点击确定。 5.VMware软件:虚拟机>设置。 6.点击 添加>网络...

weixin_46441715的博客 2万+

C++设计模式之简单工厂模式

Iphone 6即将面世过程中,富士康集团正在为Iphone6的面世做着最后的冲刺,生产线上的工人正忙碌着为Iphone6进行各道流程的加工操作。作为代工工厂,富士康为世界上IT巨头,如:苹果,惠普等加工出各种产品。市场上看到的各种品牌电脑,绝大部分来在富士康这家代工厂。在设计模式中,也存在一个类似的模式,提供一个工厂,根据需要可以创建出各种不同类型的对象,该模式称之为简单工程模式。

SunStone的小屋 1096

同步整流buck电路图设计:手把手入门必看

从零开始拆解同步整流Buck电路图及其原理,手把手带你画出关键拓扑、选型MOSFET、分析续流路径。重点讲清占空比控制逻辑与体二极管导通损耗的规避方法,让buck电路图及其原理真正落地可调、稳定可靠。

weixin_33308579的博客 995

简单工厂模式(C++描述)

一.简单工厂模式又称静态工厂方法模式(Static Factory Method),它不是Gof 所讲的23种设计模式之一,但是它却是我们在编码过程中经常使用的方法之一。  简单工厂模式的工厂类一般是使用静态方法,通过接收的参数的不同来返回不同的对象实例。 1.静态工厂方法统一管理对象的创建。 静态工厂方法通过传入的参数判断决定创建哪一个产品的实例,封装了对象的创建,客户端只管消费,实现了对

把握自己。 1544

100天精通Python(数据分析篇)——第53天:初识pandas模块_基础介绍

一、初始pandas 1. 什么是pandas? 2. 为什么要学习pandas? 3. pandas的优势 4. 下载安装pandas 二、Pandas的数据类型 1. Series 2. DataFrame

努力让自己发光,对的人才能迎着光而来 17万+

《UDS协议从入门到精通》系列——图解0x38:请求文件传输

详细解释UDS协议中0x38-请求上传服务的各个参数!!

车载系统攻城狮 3263

C++与模式---简单工厂模式(Simple Factory Pattern)

C++中的简单工厂模式在C++程序设计中,也许你想设计出一套自已的类库出来,为别人或自已的程序所用,类库的设计如果能够合理地用上设计模式的思想,则会使之易用性大大提高。本文就来探讨探讨C++中一个比较基础的设计模式的使用:简单工厂模式,也称作静态工厂方法模式。简单工厂模式讲的是类的对象或称实例的创建模式,我们来看一个实例:假如你要设计一个图形系统库,当然这里很简单了,呵

落叶追风 1485

【PG高可用】一 PostgreSQL高可用方案repmgr部署(非常详细)

repmgr安装部署

DBA之路的博客 7052

【c++设计模式03】创建型1:简单工厂模式(Simple Factory Pattern)

并由实现该接口或继承该抽象类的具体工厂类负责实例化对象。在工厂模式中,客户端通过调用工厂类的方法来获取所需的对象,而无需直接实例化对象。工厂类根据不同的需求条件,使用不同的逻辑或算法创建相应的对象,隐藏了对象创建的具体细节。工厂模式可以有效地降低系统的耦合度,提高代码的可维护性和可扩展性。它符合面向对象设计原则中的开放封闭原则,即对扩展开放,对修改封闭。当需要新增一种产品时,只需添加相应的具体产品类和对应的工厂类,而无需修改已有的代码。常见的工厂模式包括。

junxuezheng的博客 1115

智能园艺:AI Agent控制的室内种植系统

随着城市化进程的加速和人们对健康生活的追求,室内种植逐渐成为一种流行的生活方式。然而,传统的室内种植方式往往需要人工进行大量的监测和管理,效率低下且难以保证植物的生长质量。智能园艺:AI Agent控制的室内种植系统旨在利用先进的人工智能技术和传感器设备,实现室内种植的自动化和智能化管理,提高种植效率和植物生长质量。本系统的范围涵盖了从植物生长环境的监测到种植过程的自动化控制,包括温度、湿度、光照、土壤水分等环境参数的实时监测,以及灌溉、施肥、通风等种植操作的自动执行。

AI天才研究院 783

光学测量仿真软件:Zygo_(5).Zygo的数据处理与分析方法

通过上述综合案例,我们可以看到Zygo中的数据处理与分析方法是如何一步一步应用于实际数据的。从数据导入到预处理,再到滤波、表面分析、缺陷检测和数据可视化,每一步都至关重要,最终确保了数据的准确性和可靠性。处理后的数据还可以导出为多种格式,便于在其他软件中进行进一步的处理或报告。希望这个案例能够帮助您更好地理解和应用Zygo中的数据处理与分析方法。

kkchenjj的博客 946

c++设计模式:简单工厂模式(Simple Factory Pattern)

定义: 从设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫做静态工厂方法(StaticFactory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。 场景: 我们要开一家比萨商店,定义了一个简单的披萨工厂,可以根据客户的需

编程小生的专栏 688

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

c++设计模式--简单工厂模式

简单工厂模式

u013083044的博客 979

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

【C++】简单工厂模式

简单工厂模式是一种实例化对象的方式,其专门定义一个类用于创建其他的类,被创建的实例具有同一个基类,使用时只需要输入相应枚举即可创建所需的对象。在程序中,若需要创建的对象较多,导致new对象时复杂混乱,此时使用简单工厂模式,可以将对象的创建与操作分为两部分,方便后期的维护与管理。

AAADiao的博客 347

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

简单工厂模式-C++

介绍了设计原则,即简单工厂的优缺点,并附以简单工厂C++源码。

一点星光 305

【C++设计模式】简单工厂模式

从设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。 具体概念可以参照百度百科:http://baike.baidu.com/view/122790

EnCaL 788

简单工厂模式 C++实现

#ifndef ANIMAL_H #define ANIMAL_H class Animal { public:     virtual void eat()=0; }; #endif #ifndef CAT_H #define CAT_H #include"Animal.h" #include using namespace std; class C

慧声慧影 786

C++11:简单工厂模式

用户可能希望返回原始指针,但为了符合现代C++的最佳实践,使用std::unique_ptr更合适,可以自动管理内存,避免泄漏。可能还可以优化的地方:在工厂中使用std::make_unique,但C++11没有std::make_unique,它是C++14加入的。或者工厂方法中的参数比较有问题,比如大小写敏感,用户输入"circle"小写就无法匹配,但例子中可能不需要处理,保持简单。现在编写代码,注意C++11的语法,比如使用nullptr,override,unique_ptr等。

448
上一篇: std::map容器
下一篇: c++之代理模式
Qt上位机开发
Qt上位机开发 领域专家: C/C++技术领域 领域专家: C/C++技术领域
博客等级 码龄9年 9664粉丝 178原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值