#include<iostream>
using namespace std;
/*
简单工厂模式:
简单工厂模式的核心思想就是:有一个专门的类来负责创建实例的过程。
三种角色:
1.工厂角色(Creator):这是简单工厂模式的核心,由它负责创建所有的类的内部逻辑。当然工厂类必须能够被外界调用,
创建所需要的产品对象。
2.抽象(Product)产品角色:简单工厂模式所创建的所有对象的父类,注意,这里的父类可以是接口也可以是抽象类,
它负责描述所有实例所共有的公共接口。
3.具体产品(Concrete Product)角色:简单工厂所创建的具体实例对象,这些具体的产品往往都拥有共同的父类。
*/
enum ProductType
{
A=0,
B=1,
};
class AbstructProduct
{
public:
virtual void print()=0;
};
class ProductA : public AbstructProduct
{
public:
void print(){
cout<<"ProductA"<<endl;
}
};
class ProductB:public AbstructProduct
{
public:
void print()
{
cout<<"ProductB"<<endl;
}
};
class Fectory
{
public:
static AbstructProduct* getObject(ProductType type);
};
AbstructProduct* Fectory::getObject(ProductType type)
{
switch(type)
{
case A:
return new ProductA();
break;
case B:
return new ProductB();
break;
default:
break;
}
}
int main()
{
AbstructProduct *productA=Fectory::getObject(A);
productA->print();
delete productA;
return 0;
}
using namespace std;
/*
简单工厂模式:
简单工厂模式的核心思想就是:有一个专门的类来负责创建实例的过程。
三种角色:
1.工厂角色(Creator):这是简单工厂模式的核心,由它负责创建所有的类的内部逻辑。当然工厂类必须能够被外界调用,
创建所需要的产品对象。
2.抽象(Product)产品角色:简单工厂模式所创建的所有对象的父类,注意,这里的父类可以是接口也可以是抽象类,
它负责描述所有实例所共有的公共接口。
3.具体产品(Concrete Product)角色:简单工厂所创建的具体实例对象,这些具体的产品往往都拥有共同的父类。
*/
enum ProductType
{
A=0,
B=1,
};
class AbstructProduct
{
public:
virtual void print()=0;
};
class ProductA : public AbstructProduct
{
public:
void print(){
cout<<"ProductA"<<endl;
}
};
class ProductB:public AbstructProduct
{
public:
void print()
{
cout<<"ProductB"<<endl;
}
};
class Fectory
{
public:
static AbstructProduct* getObject(ProductType type);
};
AbstructProduct* Fectory::getObject(ProductType type)
{
switch(type)
{
case A:
return new ProductA();
break;
case B:
return new ProductB();
break;
default:
break;
}
}
int main()
{
AbstructProduct *productA=Fectory::getObject(A);
productA->print();
delete productA;
return 0;
}