工厂模式
简单工厂模式:子类对象较多,则引入工厂类来创建
简单工厂模式 流程:
实例:
某电视机厂为各个品牌代工生产电视机,可以使用简单工厂的模式来实现
#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;
}
当子类对象很多时,就需要用简单工厂模式来统一创建。它的优点是 可以将对象的创建和使用逻辑区分开,主次分明;缺点是 对象类和工厂类的耦合度较高,不利于扩展