为了打好基础,再来一个简单工厂模式的例子,以奥迪车为例。
/*******************************************************/
//名称:简单工厂模式(AudiFactory)
//时间:2014年4月4日12:24:17
//作者:Lynch
/*******************************************************/
#pragma once
#include<iostream>
#include"AudiFactory.h"
using namespace std;
int main()
{
string carName;
cout<<"Please input the type of an Audi car that you need!such as,A4."<<endl;
cin>>carName; //输入奥迪车的型号(工厂里边必须有该型号,如A4)
AudiFactory *audi=new AudiFactory();
Audi *a=audi->getCar(carName);
cout<<a->getResult()<<endl;
return 0;
}
#pragma once
#include<string>
using namespace std;
class Audi
{
public:
virtual string getResult()=0;
};
#pragma once
#include "Audi.h"
#include<string>
using namespace std;
class AudiA4 :
public Audi
{
public:
virtual string getResult()
{
return "Audi A4 is coming!";
}
};
#pragma once
#include "Audi.h"
#include<string>
using namespace std;
class AudiA6 :
public Audi
{
public:
virtual string getResult()
{
return "Audi A6 is coming!";
}
};
#pragma once
#include<iostream>
#include<string>
#include"Audi.h"
#include"AudiA4.h"
#include"AudiA6.h"
using namespace std;
class AudiFactory
{
public:
Audi *getCar(string name)
{
Audi *audi=NULL;
if(name=="A4")
{
audi=new AudiA4();
}
else if(name=="A6")
{
audi=new AudiA6();
}
else
{
cout<<"Cannot create this type of Audi!"<<endl;
exit(0);
}
return audi;
}
};
代码布局图:
运行效果图: