工厂模式的定义
c++中的工厂模式是一种创建型设计模式,它提供一种创建对象的接口,但具体创建的对象类型可以在运行时决定,这样可以将对象的创建与使用代码分离,提高代码的灵活性和可维护性。
在c++中实现工厂模式,通常会定义一个工厂类,该类负责创建对象。工厂类通常具有一个公共的创建接口,可以根据传入的参数或者条件来返回不同类型的对象,这样客户端代码只需要与工厂类进行交互,而无需了解具体对象的创建细节。
工厂模式的主要优点
解耦:工厂模式可以帮助我们将对象的创建和使用过程解耦,是的代码更加灵活和可维护。
工厂模式创建使用步骤
1.创建一个新的类
,可以将这个类称之为工厂类
,对于简单工厂模式来说,需要的工厂类只有一个。
2.在这个工厂类中添加一个公共的成员函数
,通过这个函数来创建我们需要的对象,关于这个函数一般将其称之为工厂函数
。
3.使用时,首先创建一个工厂对象,然后通过这个对象调用工厂函数,这样就可以产出一个指定类型的实例对象了。文章来源:https://www.toymoban.com/news/detail-728664.html
代码实例
#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模板网!