【13】c++设计模式——>简单工厂模式

这篇具有很好参考价值的文章主要介绍了【13】c++设计模式——>简单工厂模式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

工厂模式的定义

c++中的工厂模式是一种创建型设计模式,它提供一种创建对象的接口,但具体创建的对象类型可以在运行时决定,这样可以将对象的创建与使用代码分离,提高代码的灵活性和可维护性。
在c++中实现工厂模式,通常会定义一个工厂类,该类负责创建对象。工厂类通常具有一个公共的创建接口,可以根据传入的参数或者条件来返回不同类型的对象,这样客户端代码只需要与工厂类进行交互,而无需了解具体对象的创建细节。

工厂模式的主要优点

解耦:工厂模式可以帮助我们将对象的创建和使用过程解耦,是的代码更加灵活和可维护。

工厂模式创建使用步骤

1.创建一个新的类,可以将这个类称之为工厂类,对于简单工厂模式来说,需要的工厂类只有一个。
2.在这个工厂类中添加一个公共的成员函数,通过这个函数来创建我们需要的对象,关于这个函数一般将其称之为工厂函数
3.使用时,首先创建一个工厂对象,然后通过这个对象调用工厂函数,这样就可以产出一个指定类型的实例对象了。

代码实例

#include <iostream>
using namespace std;

//创建父类
class AbstructSmile
{
public:
	virtual void transform() = 0;
	virtual void ability() = 0;
	virtual ~AbstructSmile() {} //提供虚析构函数,为了能够释放子类对象
};

class sheepSmile : public AbstructSmile
{
public:
	void transform() override
	{
		cout << "山羊恶魔果实" << endl;
	}
	void ability() override
	{
		cout << "山羊能力" << endl;
	}
};

class lionSmile : public AbstructSmile
{
public:
	void transform() override
	{
		cout << "狮子恶魔果实" << endl;
	}
	void ability() override
	{
		cout << "狮子能力" << endl;
	}
};

class batSmile : public AbstructSmile
{
public:
	void transform() override
	{
		cout << "蝙蝠恶魔果实" << endl;
	}
	void ability() override
	{
		cout << "蝙蝠能力" << endl;
	}
};
enum class Type :char {SHEEP,LION,BAT};
//创建工厂类
class smileFactory
{
public:
	smileFactory() {}
	~smileFactory() {}
	void* creatsmile(Type type)
	{
		void* ptr = nullptr;
		switch (type)
		{
		case Type::SHEEP:
			ptr = new sheepSmile;
			break;
		case Type::BAT:
			ptr = new batSmile;
			break;
		case Type::LION:
			ptr = new lionSmile;
			break;
		default:
			break;
		}
		return ptr;
	}
};

int main()
{
	smileFactory* ptr = new smileFactory;
	AbstructSmile* sheepObj = (AbstructSmile*)(ptr->creatsmile(Type::SHEEP));
	sheepObj->transform();
	sheepObj->ability();
	AbstructSmile* lionObj = (AbstructSmile*)(ptr->creatsmile(Type::LION));
	lionObj->transform();
	lionObj->ability();
	AbstructSmile* batObj = (AbstructSmile*)(ptr->creatsmile(Type::BAT));
	batObj->transform();
	batObj->ability();

	return 0;
}

c++ 强类型枚举

enum class Type :char {SHEEP,LION,BAT};

代码片段是C++中的一个枚举类的定义。这是一个强类型的枚举,因为它指定了底层类型为char。这意味着这个枚举中的每个元素都会占用一个字节的内存,并且可以用char类型的值来表示。因此SHEEP,LION,BAT都各自只占一个字节。文章来源地址https://www.toymoban.com/news/detail-728664.html

到了这里,关于【13】c++设计模式——>简单工厂模式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 设计模式(二)、工厂模式--简单工厂模式

    简单工厂模式:又叫做静态工厂方法模式,是由一个工厂对象决定创建出哪一种产品类的实例。 需要注意的是:简单工厂模式属于创建型模式,但不属于23种GOF设计模式之一  该模式主要有以下几个模块构成: 具体说明结合代码,如下: 代码中主要是有一个cake接父类,两个

    2024年02月13日
    浏览(48)
  • 设计模式-简单工厂模式(静态工厂模式)java实现

    简单工厂模式根据所 提供的参数 数据返回几个可能类中的一个类的实例。通常返回的类都有一个公共的父类和公共的方法。   意图 提供一个类,负责根据一定的条件创建某一具体类的实例。同时使用工厂模式也是为了隐藏创建对象的过程 角色及其职责 (1)工厂(Creator)角色

    2024年02月13日
    浏览(52)
  • 设计模式(简单工厂模式)

    从建筑设计领域引入到计算机科学中 设计模式一共有23种 代码设计经验的总结,稳定,拓展性更强。一系列编程思想 作用:代码更容易被他人理解、保证代码可靠性、程序的重用性。 详细介绍:[https://www.runoob.com/design-pattern/design-pattern-tutorial.html]: 学习简单工厂模式的目的:

    2024年02月13日
    浏览(42)
  • 设计模式-简单工厂模式

    简单工厂模式又称为静态工厂模式,其实就是根据传入参数创建对应具体类的实例并返回实例对象,这些类通常继承至同一个父类,该模式专门定义了一个类来负责创建其他类的实例。  这就是工厂类,提供一个方法创建具体类的实例 优点:将对象的创建于使用分离,创建完

    2024年02月12日
    浏览(41)
  • 【设计模式】简单工厂模式

    分析: 这一题看上去很简单,但如果面试时你写的是下面这种代码,那大概率是过不了的。 上面代码也能实现题目的功能,但是代码没有错就是好的吗? 以上代码复用性低;可维护性差,如果要改+的逻辑,就会牵一发而动全身;扩展性差,如果这个时候新增开平方的逻辑怎

    2024年02月12日
    浏览(38)
  • 聊聊设计模式--简单工厂模式

    ​ 前面也学了很多各种微服务架构的组件,包括后续的服务部署、代码管理、Docker等技术,那么作为后端人员,最重要的任务还是代码编写能力,如何让你的代码写的漂亮、易扩展,让别人一看赏心悦目,那么设计模式就是很重的了。那么本本篇文章就来聊聊一个简单的工厂

    2024年02月07日
    浏览(43)
  • JavaScript设计模式(二)——简单工厂模式、抽象工厂模式、建造者模式

    个人简介 👀 个人主页: 前端杂货铺 🙋‍♂️ 学习方向: 主攻前端方向,正逐渐往全干发展 📃 个人状态: 研发工程师,现效力于中国工业软件事业 🚀 人生格言: 积跬步至千里,积小流成江海 🥇 推荐学习:🍍前端面试宝典 🍉Vue2 🍋Vue3 🍓Vue2/3项目实战 🥝Node.js🍒

    2024年02月10日
    浏览(47)
  • [设计模式]创建型模式-简单工厂模式

    简单工厂模式又称为静态工厂模式,属于创建型模式,但不属于GOF23设计模式。由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类。 简单工厂适用场景:工厂类负责创建的对象比较少;客户

    2024年02月20日
    浏览(44)
  • [设计模式] 简单工厂模式简易案例

    工厂模式是一种创建型设计模式,用于根据不同条件或参数创建不同类型的对象。 解决的痛点:当一个类不知道它必须创建哪个对象时,工厂模式可以用来创建特定类型的对象。 以下是一个简单的工厂模式的 Java 示例,假设你要创建不同类型的形状对象。 首先,定义一个抽

    2024年02月09日
    浏览(38)
  • 设计模式之~工厂系列(简单工厂、工厂方法、抽象工厂)

    目录 简单工厂模式 工厂方法模式 简单工厂 VS 工厂方法 抽象工厂模式: 拓展: 利用简单工厂模式优化抽象工厂   利用反射+抽象工厂   进行优化 反射+配置文件+抽象工厂进行优化 优点:简单工厂模式的最大优点在于工厂类包含了必要的逻辑判断,根据客户端的选择条件动

    2024年02月07日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包