欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 新车 > 工厂模式:简单工厂模式

工厂模式:简单工厂模式

2025/4/27 3:41:39 来源:https://blog.csdn.net/2402_84438596/article/details/147402828  浏览:    关键词:工厂模式:简单工厂模式
工厂模式
简单工厂模式:子类对象较多,则引入工厂类来创建

简单工厂模式 流程:

img

实例:

某电视机厂为各个品牌代工生产电视机,可以使用简单工厂的模式来实现

img

#include <iostream>
#include <vector>
using namespace std;typedef enum ProductTypeTag
{Hair,Hisense,
}PRODUCTTYPE;//抽象产品类 TV(电视机类)
class TV
{
public:virtual void Show() = 0;virtual ~TV(){};//声明析构函数为虚函数,防止内存泄漏
};//具体产品类 HairTV(海尔电视类)
class HairTV : public TV
{
public:void Show(){cout<<"I'm HairTV "<<endl;}
};//具体产品类 HisenseTV(海信电视类)  
class  HisenseTV : public TV
{
public:void Show(){cout<<"I'm HisenseTV"<<endl;}
};// 工厂类 TVFactory(电视机工厂类)
class TVFactory
{
public:TV* CreateTV(PRODUCTTYPE type){switch (type){case Hair:return new HairTV();case Hisense:return new HisenseTV();default:return NULL;}}
};int main(int argc, char *argv[])
{// 创建工厂类对象TVFactory* myTVFactory = new  TVFactory();TV* hairTV = myTVFactory->CreateTV(Hair);if (hairTV != NULL)hairTV->Show();TV* hisenseTV = myTVFactory->CreateTV(Hisense);if (hisenseTV != NULL)hisenseTV->Show();delete  myTVFactory;myTVFactory = NULL;delete hairTV;hairTV = NULL;delete hisenseTV;hisenseTV = NULL;  return 0;
}

当子类对象很多时,就需要用简单工厂模式来统一创建。它的优点是 可以将对象的创建和使用逻辑区分开,主次分明;缺点是 对象类和工厂类的耦合度较高,不利于扩展

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词