本文介绍: 工厂模式属于一种创建设计模式。其可以分为简单工厂模式工厂模式抽象工厂模式工厂模式分为上、中、下三篇,本篇主要介绍简单工厂模式。简单工厂模式可以理解一个工厂根据产品的种类生产多种不同的产品。简单工厂模式只有一个工厂类,工厂类中提供一个工厂函数用于根据产品种类生产各种不同产品。

概述

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

简单工厂模式

介绍

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

示例

下面给出一个示例,来加深理解简单工厂模式。
一个工厂(Factory)生产塑料笔筒(PlasticPenHolder)和铁制笔筒(IronPenHolder)。

enum MyPenHolder
{
	plasticHolder,//塑料笔筒
	ironHolder//铁制笔筒
};

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

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

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

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

示例使用

int main() 
{
	MyPenHolder type = MyPenHolder::plasticHolder;
	MyPenHolder type1 = MyPenHolder::ironHolder;
	
	Factory *factory = new Factory;
	PenHolder *holder = factory-&gt;createPenHolder(type);
	PenHolder *holder1 = factory-&gt;createPenHolder(type1);
	holder-&gt;introduce();
	holder1-&gt;introduce();

	delete holder;
	delete holder1;
	delete factory;

	return 0;
}

运行结果

在这里插入图片描述

缺点

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

原文地址:https://blog.csdn.net/blqzj214817/article/details/134581269

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_13395.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注