#include <stdlib.h>
#include <iostream>
using namespace std; class Product
{
public:
virtual ~Product() {}
virtual int Interface()=;
}; class ConcreteProductA : public Product
{
public:
ConcreteProductA() {}
virtual ~ConcreteProductA() {} int Interface()
{
cout<<"Make my ProductA good!"<<endl;
return -;
}
}; class ConcreteProductB : public Product
{
public:
ConcreteProductB() {}
virtual ~ConcreteProductB() {} int Interface()
{
cout<<"Make my ProductB better!"<<endl;
return ;
}
}; class ConcreteProductC : public Product
{
public:
ConcreteProductC() {}
virtual ~ConcreteProductC() {} int Interface()
{
cout<<"Make my ProductC best!"<<endl;
return ;
}
}; #define PRODUCTA 1
#define PRODUCTB 2
#define PRODUCTC 3 class SimpleFactory
{
public:
static Product* CreateProduct(int iType)
{
switch(iType)
{
case PRODUCTA: return new ConcreteProductA;
case PRODUCTB: return new ConcreteProductB;
case PRODUCTC: return new ConcreteProductC;
default:
{
cerr<<"Sorry, I have not the product you need!"<<endl;
return NULL;
}
}
}
}; #define CUSTOMER main
#define DESTROY(ptr) if (ptr) { delete ptr; ptr = NULL; } int CUSTOMER(int argc, char** argv)
{
Product* pProduct = NULL; pProduct = SimpleFactory::CreateProduct(PRODUCTA);
pProduct->Interface();
DESTROY(pProduct); pProduct = SimpleFactory::CreateProduct(PRODUCTB);
pProduct->Interface();
DESTROY(pProduct); pProduct = SimpleFactory::CreateProduct(PRODUCTC);
pProduct->Interface();
DESTROY(pProduct); return EXIT_SUCCESS;
}

最新文章

  1. Ubuntu安装Oracle SQLDeveloper
  2. asp.net[web.config] httphandlers 与实现自由定义访问地址
  3. Hibernate与Mybatis的概念区别
  4. Codeforces Round #304 C(Div. 2)(模拟)
  5. Android 5.0新特性了解(一)----TabLayout
  6. Recover deleted pictures in iOS 9
  7. css如此强大你知道吗
  8. Codeforces Round #410 (Div. 2)C题
  9. [js高手之路] 跟GhostWu一起封装一个字符串工具库-扩展trim,trimLeft,trimRight方法(2)
  10. vivado place30-378
  11. intellij idea 编译 kafka 源码
  12. OpenStack Q版本新功能以及各核心组件功能对比
  13. NumsCount
  14. A 暴力搜索 剪枝是关键
  15. Deep Learning论文笔记之(四)CNN卷积神经网络推导和实现
  16. Callable和Future 多线程
  17. elasticsearch-ik
  18. 【SDOI2014】【BZOJ3529】数表
  19. lock与sychronized关键字
  20. beego离线安装及运行

热门文章

  1. C++第11周(春)项目2 - 职员有薪水了
  2. Android N分屏模式Activity生命周期的变化
  3. PHP如何抓取https内容?记录一下。
  4. Helpers\SimpleCurl
  5. Java SE ---算术运算符
  6. Android(java)学习笔记100:android开发中修改字体
  7. Java作业代写
  8. oracle 排序
  9. Eclipse遇到Initializing Java Tooling解决办法
  10. [改善Java代码] 谨慎包装类型的大小比较