(四)工厂方法模式
2015-09-17 09:25
288 查看
见源码和注释:
输出:
-2
请按任意键继续. . .
//工厂方法模式 /* 工厂方法模式之精髓: 定义一个用于创建对象的接口,让子类决定实例化哪一个类,使一个类的实例化延迟到子类。 什么情况下用呢: 能用到简单工厂的地方都能用到。 优点: 相比较简单工厂而言: 简单工厂模式其特点是在工厂类中包含了必要的逻辑判断,根据客户端动态选择 实例化相关的类,出去了客户端与其功能的依赖; 但如果要增加一个新的功能,则必须要增加工厂类的逻辑判断,这就违背了 开放-封闭原则中的封闭原则(对类进行修改),所以工厂方法应运而生。 */ #include <iostream> #include <string> using namespace std; //运算抽象类 class COperation { public: virtual ~COperation() {} int m_iNumA; int m_iNumB; virtual int GetResultNow() { return 0; } }; //加法类 class COperationAdd : public COperation { public: int GetResultNow() { return m_iNumA + m_iNumB; } }; //减法类 class COperationSub : public COperation { public: int GetResultNow() { return m_iNumA - m_iNumB; } }; //抽象工厂 class CFactory { public: virtual ~CFactory() {} virtual COperation *CreateOperation() { return NULL; } }; //加法工厂 class CAddFactory : public CFactory { public: COperation *CreateOperation() { COperationAdd *pOperationAdd = new COperationAdd; return pOperationAdd; } }; //减法工厂 class CSubFactory : public CFactory { public: COperation *CreateOperation() { COperationSub *pOperationSub = new COperationSub; return pOperationSub; } }; int main() { //实例化工厂 CFactory *pFactory = new CSubFactory; if (NULL == pFactory) { return -1; } //实例化操作 COperation *pOperation = pFactory->CreateOperation(); if (NULL == pOperation) { return -1; } pOperation->m_iNumA = 2; pOperation->m_iNumB = 4; cout << pOperation->GetResultNow() << endl; delete pFactory; delete pOperation; return 0; }
输出:
-2
请按任意键继续. . .
相关文章推荐
- lib文件配置的3种方法
- 软件测试
- Git 常用命令速查表(三)
- Xcode6.4 插件管理工具Alcatraz安装和常用插件
- 存储系统科普——硬件层介绍
- winForm
- NetBeans表格
- 微信官方:我们是如何打败QQ的?
- Group Anagrams
- Android自定义控件——时钟、进度条
- 电话本3.0 I/O流实现
- Linux 运维工程师的十个基本技能点
- Struts2通配符映射
- Z表数据EXCEL导入
- [刷题]Single Number II
- 树莓派开发(SD卡删除分区)
- 基于Spring框架的Shiro配置
- virtualbox中ubuntu和windows共享文件夹设置
- 解决版本冲突-使用SVN主干与分支功能
- 存储器层级图