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