您需要一辆什么类型汽车,可以直接从工厂里面提货,而不用去管这辆汽车是怎么做出来的,以及这个汽车里面的具体实现。
#include<iostream>
using namespace std;
class Shap
{
public:
virtual void draw()=0;
};
class Rectangle : public Shap
{
public:
void draw()
{
cout << "show rectangel" << endl;
}
};
class Triangle :public Shap
{
public:
void draw()
{
cout << "show triangle" << endl;
}
};
class shapFactory
{
public:
Shap* getShap(string shapType);
};
Shap* shapFactory::getShap(string shapType)
{
if (shapType == "RECT")
{
return new Rectangle();//此处内存未释放,在下面释放(工厂只管生产产品)
}
else if (shapType == "TRIANGLE")
{
return new Triangle();
}
else
return NULL;
}
int main()
{
shapFactory myFactory;
Shap * myrect = myFactory.getShap("RECT");
if (myrect)
{
myrect->draw();
delete myrect; //释放内存
myrect = NULL;
}
system("pause");
return 0;
}