Chinaunix首页 | 论坛 | 博客
  • 博客访问: 64186
  • 博文数量: 23
  • 博客积分: 1410
  • 博客等级: 上尉
  • 技术积分: 250
  • 用 户 组: 普通用户
  • 注册时间: 2009-06-04 22:45
文章分类

全部博文(23)

文章存档

2011年(1)

2010年(1)

2009年(21)

我的朋友

分类: C/C++

2010-08-04 22:01:12

#include
using namespace std;
/*
 * 产品类
*/
class CBaseProduct
{
public:
 virtual void Print() = 0;
};
class CDeriveProductOne:public CBaseProduct
{
public:
 virtual void Print()
 {
  cout << "hello one" << endl;
 }
};
class CDeriveProductTwo:public CBaseProduct
{
public:
 virtual void Print()
 {
  cout << "hello Two" << endl;
 }
};
/*
 * 工厂类
*/
class CBaseFactory
{
public:
 virtual CBaseProduct * MakeProduct(int) = 0;
};
class CDeriveFactory:public CBaseFactory
{
public:
 virtual CBaseProduct *  MakeProduct(int iFlag);
};

/*
* 生产产品子类的实例函数
*/
CBaseProduct *
CDeriveFactory::MakeProduct(int iFlag)
{
 CBaseProduct *pProduct = NULL;
 try
 {
  switch(iFlag)
  {
  case 1:
   pProduct = new CDeriveProductOne();
   break;
  case 2:
   pProduct = new CDeriveProductTwo();
   break;
  default:
   throw(0);
  }
  
 }
 catch(...)
 {
  cout << "new obj failed" << endl;
 }
 return pProduct;
}
int main()
{
 CBaseProduct *p = NULL;
 CBaseFactory *f = new CDeriveFactory();
 p =  f->MakeProduct(2);
 
 p->Print();
 return 0;
}
阅读(666) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~