#include<iostream>
using namespace std;
class car//抽象类
{
public:
virtual void construct() = 0;
};
class BMW:public car
{
public:
void construct()
{
cout<<"造一辆宝马汽车"<<endl;
}
};
class BENZ:public car
{
public:
void construct()
{
cout<<"造一辆奔驰汽车"<<endl;
}
};
class AODI:public car
{
public:
void construct()
{
cout<<"造一辆奥迪汽车"<<endl;
}
};
class factory //负责生产具体的产品
{
public:
virtual car * create() = 0;
};
class BMWF:public factory
{
public:
car * create()
{
return new BMW;
}
};
class BENZF:public factory
{
public:
car * create()
{
return new BENZ;
}
};
class AODIF:public factory
{
public:
car * create()
{
return new AODI;
}
};
int main()
{
// car * c = new BMW;
// c->construct();//汽车类本身去造车子,耦合度太高
// delete c;
// c = new BENZ;
// c->construct();
// delete c;
// car * c;
// factory *f = new factory;//创建一个工厂
// c = f->ceratBENZ();//工厂造车
// c->construct();//显示汽车
// delete c;
// delete f;
// c = f->ceratBMW();//工厂造车
// c->construct();//显示汽车
// c = f->ceratAODI();//工厂造车
// c->construct();//显示汽车
// delete c;
// delete f;
car *c ;
factory * f = new BMWF;//选择不同的工厂
c = f->create();
c->construct();
f = new BENZF;
c = f->create();
c->construct();
f = new AODIF;
c = f->create();
c->construct();
delete f;
delete c;
return 0;
}