大话设计模式c++实现--简单工程模型
来源:互联网 发布:公安网络监控 编辑:程序博客网 时间:2024/05/13 19:55
c++和书本中的c#代码上还是有些差别的,比如C++中的switch不能用于string,动态联编等问题。
// designpatten1.cpp : 定义控制台应用程序的入口点。
//#include "stdafx.h"
#include<iostream> //包含头文件
#include<stdlib.h>
#include<string>
#include<algorithm>
class Operation
{
public:
virtual double GetResult()
{
std::cout <<"Operartion" << std::endl;
double result = 0;
return result;
}
double NumebleA = 0;
double NumebleB = 0;
};
class OperationAdd :public Operation
{
public:
double GetResult() override
{
std::cout << "+" << std::endl;
double result = 0;
result = NumebleA + NumebleB;
return result;
}
};
class OperationSub :public Operation
{
public:
double GetResult() override
{
std::cout << "-" << std::endl;
double result = 0;
result = NumebleA- NumebleB;
return result;
}
};
class OperationMul :public Operation
{
public:
double GetResult() override
{
std::cout << "*" << std::endl;
double result = 0;
result = NumebleA * NumebleB;
return result;
}
};
class OperationDiv :public Operation
{
public:
double GetResult() override
{
std::cout << "/" << std::endl;
double result = 0;
if (NumebleB == 0)
{
std::cerr << "error of dividing zero.\n";
exit(1);
}//异常退出程序
result = NumebleA / NumebleB;
return result;
}
};
class OperationFactory
{
public:
static Operation* createOperate(char operate)
{
Operation *oper;
switch (operate)
{
case '+':
oper = new OperationAdd();
break;
case '-':
oper = new OperationSub();
break;
case '*':
oper = new OperationMul();
break;
case '/':
oper = new OperationDiv();
break;
default:
{
std::cerr << "no such operate \n";
exit(1);
}
}
return oper;
}
};
//int _tmain(int argc, _TCHAR* argv[])
int main(int argc, char **argv)
{
Operation *oper;
char operat;
double Numble_A,Numble_B;std::cout << "please enter NumebleA:";
std::cin >> Numble_A;
std::cout << std::endl;
std::cout << "please enter operation:";std::cin >> operat;
std::cout << std::endl;
std::cout << "please enter NumebleB:";
std::cin >> Numble_B;
std::cout << std::endl;
oper = OperationFactory::createOperate(operat);
oper->NumebleA = Numble_A;
oper->NumebleB = Numble_B;
double result = oper->GetResult();
std::cout <<"result="<< result << std::endl;
return 0;
}
1 0
- 大话设计模式c++实现--简单工程模型
- 大话设计模式java版本 第一章 简单工程模式
- 简单工厂实现-大话设计模式
- 简单工厂实现-大话设计模式
- 《大话设计模式》之 简单工厂模式 Delphi/C shap /JAVA 实现
- 《大话设计模式》之 简单工厂模式 Delphi/C shap /JAVA 实现
- 大话设计模式 原形模型
- 大话设计模式之C++实现---简单工厂模式
- 大话设计模式(C++实现)--简单工厂模式
- 大话设计模式c++实现之一 简单工厂模式
- 大话设计模式 第一章 简单工厂模式 C++实现
- 《大话设计模式》java实现之简单工厂模式
- 大话设计模式简单总结
- 《大话设计模式》- 简单工厂方法 - C++实现
- 简单设计模式-《大话设计模式》笔记
- 大话设计模式C++.pdf
- 设计模式 -- 策略模式 + 简单工程模式(C++)
- 大话设计模式UML实现
- DevExpress GridControl使用
- Oracle处理CLOB超过4000入库问题 (2)
- 3.3 DXC简介——HANA数据抽取和同步
- 【待重置】记忆化搜索思想
- MapReduce 2.0应用场景、原理与基本架构
- 大话设计模式c++实现--简单工程模型
- 新生练习1(递推)
- opencv中的侧脸检测
- Oracle学习笔记三---oracle逻辑结构
- Linux下TCP/IP socket 编程二
- Apache DbUtils 探秘
- 活得像个像个老泼皮,惭愧。
- POJ3181 Dollar Dayz(DP)
- VS2012下安装OpenCV3.0.0的记要