网站建设 规范,公众号怎么进入,网络服务商的英文缩写,营销策略包括哪些内容工厂模式的定义
c中的工厂模式是一种创建型设计模式#xff0c;它提供一种创建对象的接口#xff0c;但具体创建的对象类型可以在运行时决定#xff0c;这样可以将对象的创建与使用代码分离#xff0c;提高代码的灵活性和可维护性。 在c中实现工厂模式#xff0c;通常会定…工厂模式的定义
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都各自只占一个字节。