设计模式(一)简单工厂模式
来源:互联网 发布:百度壁纸无法连接网络 编辑:程序博客网 时间:2024/04/29 17:33
(一)简单工厂模式
主要用于创建对象。新添加类时,不会影响以前的系统代码。
核心思想是用一个工厂来根据输入的条件产生不同的类,然后根据不同类的virtual函数得到不同的结果。
GOOD:适用于不同情况创建不同的类时。
BUG:客户端必须要知道基类和工厂类,耦合性差。
#include <iostream>using namespace std;//(一)简单工厂模式// 主要用于创建对象。新添加类时,不会影响以前的系统代码。// 核心思想是用一个工厂来根据输入的条件产生不同的类,然后根据不同类的virtual函数得到不同的结果。// GOOD:适用于不同情况创建不同的类时// BUG:客户端必须要知道基类和工厂类,耦合性差//基类class COperation{public:double m_nFirst;double m_nSecond;virtual double GetResult(){double dResult=0;return dResult;}};//加法class AddOperation : public COperation{public:virtual double GetResult(){return m_nFirst+m_nSecond;}};//减法class SubOperation : public COperation{public:virtual double GetResult(){return m_nFirst-m_nSecond;}};//乘法class MulOperation : public COperation{public:virtual double GetResult(){return m_nFirst*m_nSecond;}};//除法class DivOperation : public COperation{public:virtual double GetResult(){return m_nFirst/m_nSecond;}};//工厂类class CCalculatorFactory{public:static COperation* Create(char cOperator);};COperation* CCalculatorFactory::Create(char cOperator){COperation *oper; //在C#中可以用反射来取消判断时用的switch,在C++中用什么呢?RTTI??switch (cOperator){case '+':oper=new AddOperation();break;case '-':oper=new SubOperation();break;case '*':oper=new MulOperation();break;case '/':oper=new DivOperation();break;default:oper=new COperation();}return oper;}//客户端int main(){double a,b;char ch;while(cin>>a>>b>>ch){if(b==0){cout<<"非法输入,请重新输入"<<endl;continue;}COperation * op = CCalculatorFactory::Create(ch);op->m_nFirst=a;op->m_nSecond=b;cout<<op->GetResult()<<endl;}return 0;}
0 0
- 设计模式(一):简单工厂模式
- 设计模式(一)简单工厂模式
- 设计模式(一)简单工厂模式
- 设计模式(一)简单工厂模式
- 设计模式(一)简单工厂模式
- 设计模式(一):简单工厂模式
- Java设计模式:工厂模式(一)简单工厂模式
- 工厂设计模式一 简单工厂模式
- 设计模式之工厂设计模式(一:简单工厂模式与工厂方法模式)
- 设计模式 一 简单工厂Simple Factory(工厂模式)
- 工厂设计模式(一)--简单工厂模式
- 设计模式一 简单工厂设计模式
- 设计模式(一):策略模式+简单工厂模式
- 设计模式(一) -- 简单工厂
- 设计模式(一)简单工厂
- 设计模式—简单工厂(一)
- 设计模式一 简单工厂
- 设计模式一:简单工厂
- WIN10 X64下通过TLS实现反调试
- oc开发笔记3 录音时频率获取 以及声像显示
- 不知道是win10在抽风还是校园网在抽风
- Bzoj3190:[JLOI2013]赛车:半平面交
- PHP中session变量的销毁
- 设计模式(一)简单工厂模式
- U8SDK——支持自动拆分成多个dex文件(MultiDex支持)
- iOS开发:调用相关设备
- 语音识别(Speaker Recognition)
- Linux设置环境变量方法(export PATH)
- 挑战第二章 poj 3009 水题DFS
- Android常用颜色大全
- HDU--2043
- 第k大元素