操作流程:

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;
}
}
}

最新文章

  1. WPF获取应用程序启动目录的方法
  2. 【接口测试】jmeter的使用
  3. 3.openstack之mitaka搭建keystone认证服务
  4. PAT (Basic Level) Practise:1019. 数字黑洞
  5. python zip enumerate函数
  6. ltib学习抄录
  7. leetcode 26
  8. java 下载spring的方法
  9. java基础之代理
  10. Android doGet方法
  11. 杭电OJ——1007 Quoit Design(最近点对问题)
  12. 零积分下载,2014年辛星mysql教程秋季版第一本已经完工,期待您的支持
  13. ASP.NET MVC创建的网站
  14. hdu_5874_Friends and Enemies(公式题)
  15. localStorage , sessionStorage ,cookie 使用介绍
  16. 获取SQL中某一列的类型及精度
  17. nginx的5个特点
  18. 【转载】阿里云轻量应用型服务器和ECS服务器比较
  19. Hadoop生态圈-Ambari控制台功能简介
  20. kbmmw 5.04 发布

热门文章

  1. dubbo 发布 RPC 服务
  2. jQuery操作元素对象的样式
  3. HDU2255 奔小康赚小钱钱(二分图-最大带权匹配)
  4. Python深入之python内存管理机制(重点)
  5. Day 06 流程控制和爬虫基础2
  6. 一次框架性能的比较,引起了我对搭建web框架的兴趣
  7. JS基础-原型链和继承
  8. hibernate mysql中文检出无效
  9. django----Sweetalert bulk_create批量插入数据 自定义分页器
  10. 简单学习【1】——打包JS