C++设计模式之工厂模式(上)——简单工厂模式

工厂模式

概述

工厂模式属于一种创建型设计模式。其可以分为简单工厂模式,工厂模式和抽象工厂模式。工厂模式分为上、中、下三篇,本篇主要介绍简单工厂模式。

简单工厂模式

介绍

简单工厂模式可以理解为一个工厂根据产品的种类生产多种不同的产品。简单工厂模式只有一个工厂类,工厂类中提供一个工厂函数,用于根据产品种类生产各种不同产品。

示例

下面给出一个示例,来加深理解简单工厂模式。

有一个工厂(Factory)生产塑料笔筒(PlasticPenHolder)和铁制笔筒(IronPenHolder)。

cpp 复制代码
enum MyPenHolder
{
	plasticHolder,//塑料笔筒
	ironHolder//铁制笔筒
};

class PenHolder 
{
public:
	virtual void introduce() = 0;
};

class PlasticPenHolder :public PenHolder 
{
public:
	void introduce()override 
	{
		cout << "I am PlasticPenHolder!" << endl;
	}
};

class IronPenHolder :public PenHolder 
{
public:
	void introduce()override 
	{
		cout << "I am IronPenHolder!" << endl;
	}
};

class Factory 
{
public:
	PenHolder* createPenHolder(enum MyPenHolder &type) 
	{
		if (type == plasticHolder)
		{
			return new PlasticPenHolder;
		}
		else if (type == ironHolder)
		{
			return new IronPenHolder;
		}
		else 
		{
			return nullptr;
		}
	}
};

示例使用

cpp 复制代码
int main() 
{
	MyPenHolder type = MyPenHolder::plasticHolder;
	MyPenHolder type1 = MyPenHolder::ironHolder;
	
	Factory *factory = new Factory;
	PenHolder *holder = factory->createPenHolder(type);
	PenHolder *holder1 = factory->createPenHolder(type1);
	holder->introduce();
	holder1->introduce();

	delete holder;
	delete holder1;
	delete factory;

	return 0;
}

运行结果

缺点

当需要生产的产品的种类增加时,工厂类就需要修改,打破了程序设计原则中的封闭原则。

相关推荐
影视飓风TIM6 小时前
C++哈希表深度剖析:冲突处理、rehash、迭代器与unordered容器封装
c++·哈希算法·散列表
C++ 老炮儿的技术栈7 小时前
Qt5 使用 QPainter 绘制阿基米德螺线
开发语言·c++·windows·qt·代码化
Carl_奕然7 小时前
【智能体】Agent的四种设计模式之:React(2026最新版)
javascript·人工智能·python·react.js·设计模式·语言模型
cfm_29147 小时前
Spring核心设计模式
java·spring·设计模式
xxwxx__7 小时前
深入理解 C++ STL:stack、queue 与 deque 从使用到底层实现全解析
开发语言·c++·算法
wuminyu7 小时前
JVM锁膨胀与Futex源码解析
java·linux·c语言·jvm·c++
郝学胜-神的一滴7 小时前
C++11 工程级应用 08:Lambda表达式与Tuple元组
开发语言·jvm·c++·python·程序人生·开源
水饺编程9 小时前
第5章,[Win32 章节] :圆角矩形教学插图绘制程序
c语言·c++·windows·visual studio
Existence_Time9 小时前
CSP 考前复习
c++
zerwave9 小时前
从零实现简化 DDS 完整技术文档(含模块作用与详细注释)
linux·c++·机器人