simple_factory
#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;
}
simple_factory的更多相关文章
- Java设计模式(一) 简单工厂模式不简单
摘要:本文介绍了简单工厂模式的概念,优缺点,实现方式,以及结合Annotation和反射的改良方案(让简单工厂模式不简单).同时介绍了简单工厂模式(未)遵循的OOP原则.最后给出了简单工厂模式在JDB ...
- 【创建型】Abstract Factory模式 & Factory Method模式
本文主要介绍简单工厂模式与抽象工厂模式.以下如有叙述不当之处,欢迎批评指正,欢迎交流探讨. 一:简单工厂模式 在23种设计模式中,简单工厂模式其实是不在列的,但理解该模式对于抽象工厂模式的思想理解是有 ...
- 【51】java设计模式-工厂设计模式剖析
工厂设计设计模式的分类: 工厂模式在<Java与模式>中分为三类: 1)简单工厂模式(Simple Factory):不利于产生系列产品: 2)工厂方法模式(Factory Method) ...
随机推荐
- javascript操作
1. >> 按位右移运算符 result = expression1 >> expression2 右移表达式的位,保持符号不变. >> 运算符将 expressi ...
- XtraBackup原理4
MySQL · 答疑解惑 · 物理备份死锁分析 背景 本文对 5.6 主备场景下,在备库做物理备份遇到死锁的case进行分析,希望对大家有所帮助. 这里用的的物理备份工具是 Percona-XtraB ...
- 基于ActiveMQ的统一日志服务
概述 以ActiveMQ + Log4j + Spring的技术组合,实现基于消息队列的统一日志服务. 参考:Spring+Log4j+ActiveMQ实现远程记录日志——实战+分析 与参考文章的比较 ...
- mysql导入数据库
mysql -u root -p bbs < d:\bbs_2011-06-15 --default-character-set=gbk mysqldump -uroot -p ta ...
- VIM标记 mark 详解
转载:http://blog.163.com/lgh_2002/blog/static/44017526201081154512135/ 我的vim配置:http://pan.baidu.com/s/ ...
- hive-通过Java API操作
通过Java API操作hive,算是测试hive第三种对外接口 测试hive 服务启动 package org.admln.hive; import java.sql.SQLException; i ...
- linux 安装GCC
研究生阶段已经开始了一段时间了,选了LINUX深入分析,之前没怎么接触过,感觉还是有点难度的.不,好像是很难. 从学校借了一台电脑,安装了UBUNTU12.04的系统,可是不知道怎么地,这个系统里,没 ...
- Netty线程模型
一.Reactor模型 1.单线程模型 Reactor单线程模型,指的是所有的IO操作都在同一个NIO线程上面完成,NIO线程的职责如下: 1)作为NIO服务端,接收客户端的TCP连接: 2)作为NI ...
- MyBatis(3.2.3) - Configuring MyBatis using XML, Settings
The default MyBatis global settings, which can be overridden to better suit application-specific nee ...
- 使用spring+hibernate+atomikos+tomcat构建分布式事务
本文通过一个demo,介绍如何使用spring+hibernate+atomikos+tomcat构建在一个事务中涉及两个数据源的web应用. demo功能:实现一个能成功提交和回滚的涉及两个数据库数 ...