Factory顾名思义是工厂的意思,即生产对象的工厂。它解决的问题是对象的创建,将对象的创建进行封装,并且把对象的创建放到子类中实现。
2014年4月10日
2014年4月10日
/*工厂模式的两个功能:(1)定义创建对象的接口,封装对象的创建
(2)把对象的创建放到子类中实现*/
#include<iostream>
#include<string>
using namespace std;
class Product
{
public:
void printf_result()
{
cout << "产品:" << product << endl;
cout << "检验结果:" << result << endl;
cout << "产品负责人:" << person << endl;
cout << endl << endl;
}
protected:
char *result;
char *product;
char *person;
};
class ProductA:public Product
{
public:
ProductA()
{
product = "A产品";
result = "合格";
person = "马君";
}
};
class ProductB :public Product
{
public:
ProductB()
{
product = "B产品";
result = "不合格";
person = "李四";
}
};
class ProductC :public Product
{
public:
ProductC()
{
product = "C产品";
result = "不合格";
person = "张三";
}
};
class ProductFactory //产品工厂
{
public:
static Product*create_product(string kind)
{
if (strcmp("A产品", kind.c_str()) == 0)
return new ProductA;
else if (strcmp("B产品", kind.c_str()) == 0)
return new ProductB;
else if (strcmp("C产品", kind.c_str()) == 0)
return new ProductC;
else return NULL;
}
};
int main(void)
{
Product*A = ProductFactory::create_product("A产品");
A->printf_result();
Product*B = ProductFactory::create_product("B产品");
B->printf_result();
Product *C = ProductFactory::create_product("C产品");
C->printf_result();
delete(A);
delete(B);
delete(C);
return 0;
}