使用C#面向对象实现简易计算器(简单工厂模式)
操作流程:
1. 新建Operation类
2. 新建OperationAdd类,并继承Operation类
3. 新建OperationSub类,并继承Operation类
4. 新建OperationMul类,并继承Operation类
5. 新建OperationDiv类,并继承Operation类
6. 新建创造实例的工厂类OperationFactory
7. Main方法操作根据传入的运算符创造相对应的操作类,并执行相对应的运算逻辑
1、新建Operation类
public class Operation
{
public double numberA { get; set; }
public double numberB { get; set; }
public virtual double getResult()
{
return 0;
}
}
2. 新建OperationAdd类,并继承Operation类
public class OperationAdd : Operation
{
//实现操作加法运算
public override double getResult()
{
double result = 0;
result = numberA + numberB;
return result;
}
}
3. 新建OperationSub类,并继承Operation类
public class OperationSub : Operation
{
//实现减法操作
public override double getResult()
{
double result = 0;
result = numberA - numberB;
return result;
}
}
4. 新建OperationMul类,并继承Operation类
public class OperationMul : Operation
{
//实现乘法操作
public override double getResult()
{
double result = 0;
result = numberA * numberB;
return result;
}
}
5. 新建OperationDiv类,并继承Operation类
public class OperationDiv : Operation
{
//实现除法操作
public override double getResult()
{
double result = 0;
if (numberB == 0)
throw new Exception("除数不能为0");
result = numberA / numberB;
return result;
}
}
6. 新建创造实例的工厂类OperationFactory
public class OperationFactory
{
public static Operation CreateOperate(string operate)
{
Operation oper = null;
switch (operate)
{
case "+":
oper = new OperationAdd();
break;
case "-":
oper = new OperationSub();
break;
case "*":
oper = new OperationMul();
break;
case "/":
oper = new OperationDiv();
break;
default:
break;
}
return oper;
}
}
7. Main方法操作根据传入的运算符创造相对应的操作类,并执行相对应的运算逻辑
class Program
{
static void Main(string[] args)
{
try
{
Operation oper = OperationFactory.CreateOperate("+");
oper.numberA = 3;
oper.numberB = 2;
double result = oper.getResult();
Console.WriteLine(result);
Console.ReadLine();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
Console.ReadLine();
throw;
}
}
}

使用C#面向对象实现简易计算器(简单工厂模式)的更多相关文章
- [Python设计模式] 第1章 计算器——简单工厂模式
github地址:https://github.com/cheesezh/python_design_patterns 写在前面的话 """ 读书的时候上过<设计模 ...
- 简单工厂模式的C++实现
用简单工厂模式实现一个计算器类: #include <iostream> #include <string> using namespace std; class Operat ...
- C++ | 简单工厂模式 | 复数计算器
简单工厂模式最直观的一个应用便是实现一个计算器的程序. 比如,公司让你给计算器添加一个幂运算的功能,你只需要设计一个幂运算的类,并实现幂运算的逻辑,然后让该类继承自运算类即可. 简单工厂模式: 简单工 ...
- java:面向对象(多态,final,抽象方法,(简单工厂模式即静态方法模式),接口)
* 生活中的多态:同一种物质,因环境不同而表现不同的形态. * 程序中多态:同一个"接口",因不同的实现而执行不同的操作. * 多态和方法的重写经常结合使用,子类重写父类的方法,将 ...
- PHP面向对象-设计模式 单例模式 简单工厂模式 工厂方法模式
1.单例模式 单例模式是一种常用的软件设计模式.在它的核心结构中只包含一个被称为单例的特殊类.通过单例模式可以保证系统中一个类只有一个实例.即一个类只有一个对象实例. 要实现每一个类只有一个实例,就需 ...
- PHP中“简单工厂模式”实例讲解
原创文章,转载请注明出处:http://www.cnblogs.com/hongfei/archive/2012/07/07/2580776.html 简单工厂模式:①抽象基类:类中定义抽象一些方法, ...
- 设计模式 | 简单工厂模式(static factory method)
按理说应该把书全都看完一遍,再开始写博客比较科学,会有比较全面的认识. 但是既然都决定要按规律更新博客了,只能看完一个设计模式写一篇了. 也算是逼自己思考了,不是看完就过,至少得把代码自己都敲一遍. ...
- 代码无错就是优?简单工厂模式 C#
还是那几句话: 学无止境,精益求精 十年河东,十年河西,莫欺少年穷 学历代表你的过去,能力代表你的现在,学习代表你的将来 废话不多说,直接进入正题: 现在给你一道面试题,如下: 请用C++,C#,Ja ...
- iOS设计模式:简单工厂模式
1.简述 首先需要说明一下,简单工厂模式不属于23种GOF设计模式之一.它也称作静态工作方法模式,是工厂方法模式的特殊实现(也就是说工厂模式包含简单工厂模式).这里对简单工厂模式进行介绍,是为后面的工 ...
- Java 设计模式01 - 简单工厂模式
先要学习设计模式之前的先看看一些基础 UML类图简单说明 可以先看看我的这篇博客: UML类图简单说明,学习编程思路的必会技能 接下来才是重点,开始我们的旅程吧. 一.UML类图展示 我们要用简单工厂 ...
随机推荐
- numpy的基本API(二)——维数操作
numpy的基本维数操作API iwehdio的博客园:https://www.cnblogs.com/iwehdio/ 1.np.copyto(dst, src) copyto方法将数组src复制到 ...
- ARTS-S 做事情的正确方法
有同学改bug的思路是:你们别管我怎么改,先看改的效果对不对.效果对,就这样改,效果不对,我再想别的办法.这样其实把自己关起来,盲目试错,效率太低. 合理的方法应该是和其他大佬们商量一个大家认为正确的 ...
- ARTS-S anaconda常用命令
建新的环境 conda create --name py36 python=3.6 显示所有环境 conda info --envs 一键安装 wget https://repo.anaconda.c ...
- ARTS-S golang单元测试
golang单元测试 在$GOPATH的src目录下建目录demo_unittest 在目录demo_unittest下建文件calc.go,内容如下: package demo_unittest f ...
- ASP.NET Core 选项模式源码学习Options IOptionsMonitor(三)
前言 IOptionsMonitor 是一种单一示例服务,可随时检索当前选项值,这在单一实例依赖项中尤其有用.IOptionsMonitor用于检索选项并管理TOption实例的选项通知, IOpti ...
- poj 1062 昂贵的聘礼 (有限制的最短路)
昂贵的聘礼 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 56594 Accepted: 17083 Descripti ...
- UWP GraphQL数据查询的实现
1. 缘起 Facebook 的移动应用从 2012 年就开始使用 GraphQL.GraphQL 规范于 2015 年开源,现已经在多种环境下可用,并被各种体量的团队所使用. 在这个链接可以看到更多 ...
- C++ 构造函数【新手必学】
前言本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理.作者:可乐司机构造函数是C++里面的基础内容,特别重要,如果你刚学C++不久, ...
- 分享一篇关于C#大文件上传的整个过程
简单写个小例子,记录一下此次大文件上传遇到的所有问题. 一.客户端(使用winform窗体实现) 具体功能: 点击“选择”按钮,选择要上传的文件 点击“上传文件”按钮,上传该文件调用UpLoad_Re ...
- vue-cli4.0脚手架安装
10月16日,官方发布消息称Vue-cli 4.0正式版发布,并且强烈建议升级;小编也是刚刚安装了最新版本的脚手架看看更新了什么 安装和vue-cli3.0的是一模一样的,对比了一下3.0的脚手架,除 ...