* AbsPerson.h
*
* Created on: Mar 22, 2014
* Author: lch
*/
#ifndef ABSPERSON_H_
#define ABSPERSON_H_
class AbsPerson {
public:
virtual void eat()=0;
virtual ~AbsPerson(){}
};
#endif /* ABSPERSON_H_ */
/*
* ChinaPerson.h
*
* Created on: Mar 22, 2014
* Author: lch
*/
#ifndef CHINAPERSON_H_
#define CHINAPERSON_H_
#include "AbsPerson.h"
#include <iostream>
class ChinaPerson :public AbsPerson{
public:
virtual void eat();
};
#endif /* CHINAPERSON_H_ */
/*
* ChinaPerson.cpp
*
* Created on: Mar 22, 2014
* Author: lch
*/
#include "ChinaPerson.h"
using namespace std;
void ChinaPerson::eat(){
cout<<"eate china rice."<<endl;
}
/*
* USAperson.h
*
* Created on: Mar 22, 2014
* Author: lch
*/
#ifndef USAPERSON_H_
#define USAPERSON_H_
#include "AbsPerson.h"
#include <iostream>
class USAperson :public AbsPerson{
public:
virtual void eat();
};
#endif /* USAPERSON_H_ */
/*
* USAperson.cpp
*
* Created on: Mar 22, 2014
* Author: lch
*/
#include "USAperson.h"
using namespace std;
void USAperson::eat(){
cout<<"eat usa rice."<<endl;
}
/*
* AbsCar.h
*
* Created on: Mar 22, 2014
* Author: lch
*/
#ifndef ABSCAR_H_
#define ABSCAR_H_
class AbsCar {
public:
virtual void run()=0;
virtual ~AbsCar() {
}
};
#endif /* ABSCAR_H_ */
/*
* ChinaCar.h
*
* Created on: Mar 22, 2014
* Author: lch
*/
#ifndef CHINACAR_H_
#define CHINACAR_H_
#include "AbsCar.h"
#include <iostream>
class ChinaCar: public AbsCar {
public:
ChinaCar();
virtual ~ChinaCar();
virtual void run();
};
#endif /* CHINACAR_H_ */
/*
* ChinaCar.cpp
*
* Created on: Mar 22, 2014
* Author: lch
*/
#include "ChinaCar.h"
using namespace std;
ChinaCar::ChinaCar() {
// TODO Auto-generated constructor stub
}
ChinaCar::~ChinaCar() {
// TODO Auto-generated destructor stub
}
void ChinaCar::run(){
cout<<"run china car."<<endl;
}
/*
* USAcar.h
*
* Created on: Mar 22, 2014
* Author: lch
*/
#ifndef USACAR_H_
#define USACAR_H_
#include "AbsCar.h"
#include <iostream>
class USAcar: public AbsCar {
public:
USAcar();
virtual ~USAcar();
virtual void run();
};
#endif /* USACAR_H_ */
/*
* USAcar.cpp
*
* Created on: Mar 22, 2014
* Author: lch
*/
#include "USAcar.h"
using namespace std;
USAcar::USAcar() {
// TODO Auto-generated constructor stub
}
USAcar::~USAcar() {
// TODO Auto-generated destructor stub
}
void USAcar::run(){
cout<<"run usa car."<<endl;
}
/*
* AbsFactory.h
*
* Created on: Mar 22, 2014
* Author: lch
*/
#ifndef ABSFACTORY_H_
#define ABSFACTORY_H_
#include "AbsPerson.h"
#include "AbsCar.h"
class AbsFactory {
public:
AbsFactory(){}
virtual ~AbsFactory(){}
virtual AbsPerson* createPerson()=0;
virtual AbsCar* createCar()=0;
};
#endif /* ABSFACTORY_H_ */
/*
* ChinaFactory.h
*
* Created on: Mar 22, 2014
* Author: lch
*/
#ifndef CHINAFACTORY_H_
#define CHINAFACTORY_H_
#include "AbsFactory.h"
#include "ChinaPerson.h"
#include "ChinaCar.h"
class ChinaFactory: public AbsFactory {
public:
virtual ~ChinaFactory();
virtual AbsPerson* createPerson();
virtual AbsCar* createCar();
};
#endif /* CHINAFACTORY_H_ */
/*
* ChinaFactory.cpp
*
* Created on: Mar 22, 2014
* Author: lch
*/
#include "ChinaFactory.h"
ChinaFactory::~ChinaFactory() {
// TODO Auto-generated destructor stub
}
AbsPerson* ChinaFactory::createPerson(){
return new ChinaPerson;
}
AbsCar* ChinaFactory::createCar(){
return new ChinaCar;
}
/*
* UsaFactory.h
*
* Created on: Mar 22, 2014
* Author: lch
*/
#ifndef USAFACTORY_H_
#define USAFACTORY_H_
#include "AbsFactory.h"
#include "USAperson.h"
#include "USAcar.h"
class UsaFactory: public AbsFactory {
public:
virtual ~UsaFactory();
virtual AbsPerson* createPerson();
virtual AbsCar* createCar();
};
#endif /* USAFACTORY_H_ */
/*
* UsaFactory.cpp
*
* Created on: Mar 22, 2014
* Author: lch
*/
#include "UsaFactory.h"
UsaFactory::~UsaFactory() {
// TODO Auto-generated destructor stub
}
AbsPerson* UsaFactory::createPerson(){
return new USAperson;
}
AbsCar* UsaFactory::createCar(){
return new USAcar;
}
/*
* maintest.cpp
*
* Created on: Mar 22, 2014
* Author: lch
*/
#include "ChinaFactory.h"
#include "UsaFactory.h"
int main(int argc,char* args){
AbsFactory* chinafactory=new ChinaFactory;
AbsPerson* chinaperson=chinafactory->createPerson();
chinaperson->eat();
//
AbsCar* chinacar=chinafactory->createCar();
chinacar->run();
//
AbsFactory* usafactory=new UsaFactory;
AbsPerson* usaperson=usafactory->createPerson();
usaperson->eat();
//
AbsCar* usacar=usafactory->createCar();
usacar->run();
return 0;
}