工厂模式
2016-02-21 22:26
246 查看
#include <iostream> using namespace std; class Data { public: Data() {} Data(const double& dNumberOne, const double& dNumberTwo) : m_dNumberOne(dNumberOne), m_dNumberTwo(dNumberTwo) {} virtual const double getResult() { return 0; } void setNumber(const double& dNumberOne, const double& dNumberTwo) { m_dNumberOne = dNumberOne; m_dNumberTwo = dNumberTwo; } protected: double m_dNumberOne = 0; double m_dNumberTwo = 0; }; class DataAdd : public Data { public: virtual const double getResult() override { return (m_dNumberOne + m_dNumberTwo); } }; class DataFactory { public: virtual Data* createDataFactory() = 0; }; class DataAddFactory : public DataFactory { public: virtual Data* createDataFactory() override { return (new DataAdd()); } }; int main() { DataFactory* pobjDataFactory = new DataAddFactory(); Data* pobjData = pobjDataFactory->createDataFactory(); pobjData->setNumber(1, 2); cout << pobjData->getResult() << endl; return 0; }总结:工厂模式遵循开放封闭原则,把创建操作类延迟到子类进行,只是需要客户端进行判断需要做什么操作
相关文章推荐
- java基础之数组常见问题分析
- php生成图片文字水印
- 单例模式
- case...when语句使用
- PHP知识点——2
- PHP知识点——1
- C# 7 新特性-1
- 重新生成和组织索引
- 18-题目1069:查找学生信息
- python基础学习,基础语法总结
- iscsi 挂载网络存储及存储访问
- 【机房合作】单例模式实战
- Microsoft(R) Developer Studio 已停止工作 解决办法(1)
- Sublime Text 3 破解版 + 注册机 + 汉化包(转自 http://www.cnsecer.com/251.html)
- 设计模式理解
- hdoj 2080 夹角有多大II
- am335x嵌入式开发-bootloader启动流程
- URL之好资源整理(看云平台)
- .Net 框架
- android基础之六——多媒体编程