基于c++的抽象工厂模式实现初探。

/*
 * 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;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值