C#基于简单工厂模式实现的计算器功能示例
作者:无盐海 时间:2023-06-19 12:40:10
本文实例讲述了C#基于简单工厂模式实现的计算器功能。分享给大家供大家参考,具体如下:
子类拥有父类除私有之外的所有属性字段和方法
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 工厂方法实现计算器
{
/// <summary>
/// 计算器类(抽象类,由子类重写)
/// </summary>
public abstract class Calculator
{
public double Number1 { get; set; }
public double Number2 { get; set; }
public Calculator() { }
public Calculator(double a, double b)
{
this.Number1=a;
this.Number2=b;
}
/// <summary>
/// 计算
/// </summary>
/// <returns></returns>
public abstract double jsuan();
}
/// <summary>
/// 加法类
/// </summary>
public class jiafaDll:Calculator //子类拥有父类除私有之外的所有属性字段和方法
{
public jiafaDll() { }
public jiafaDll(double a, double b)
: base(a, b) //调用父类带两个参数的构造函数,来初始化Number1 和Number2 (注意:因为jianfaDll类继承了Calculator,所以jianfaDll类是有Number1,和Number2两个属性的)
{ }
/// <summary>
/// 重写父类的jsuan方法
/// </summary>
/// <returns></returns>
public override double jsuan()
{
return Number1 + Number2;
}
}
/// <summary>
/// 减法类
/// </summary>
public class jianfaDll : Calculator
{
public jianfaDll()
{ }
public jianfaDll(double a, double b)
: base(a, b)
{ }
public override double jsuan()
{
return Number1 - Number2;
}
}
class Program
{
static void Main(string[] args)
{
Console.WriteLine("请输入第一个数");
double number1 = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("请输入一个操作符");
string caozuofu = Console.ReadLine();
Console.WriteLine("请输入第二个数");
double number2 = Convert.ToDouble(Console.ReadLine());
Calculator c=null;
switch (caozuofu)
{
case "+":
c = new jiafaDll(number1, number2);
break;
case "-":
c = new jianfaDll(number1, number2);
break;
}
double i= c.jsuan();
Console.WriteLine(i);
Console.ReadKey();
}
}
}
PS:这里再为大家推荐几款计算工具供大家进一步参考借鉴:
在线一元函数(方程)求解计算工具:
http://tools.jb51.net/jisuanqi/equ_jisuanqi
科学计算器在线使用_高级计算器在线计算:
http://tools.jb51.net/jisuanqi/jsqkexue
在线计算器_标准计算器:
http://tools.jb51.net/jisuanqi/jsq
希望本文所述对大家C#程序设计有所帮助。
来源:http://blog.csdn.net/fanbin168/article/details/45788277
标签:C#,工厂模式,计算器
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Java线程的调度与优先级详解
2023-04-30 13:48:13
MyBatis框架底层的执行原理源码解析
2023-10-28 12:19:27
![](https://img.aspxhome.com/file/2023/3/76313_0s.png)
Spring boot 连接多数据源过程详解
2023-11-28 12:09:51
Ajax实现省市区三级联动
2023-01-14 05:09:58
![](https://img.aspxhome.com/file/2023/3/71663_0s.png)
在IDEA里gradle配置和使用的方法步骤
2023-11-23 16:07:58
![](https://img.aspxhome.com/file/2023/1/59851_0s.png)
springboot日期转换器实现实例解析
2023-01-31 13:16:45
![](https://img.aspxhome.com/file/2023/1/67151_0s.png)
超详细的Java 问题排查工具单
2023-02-10 06:02:17
![](https://img.aspxhome.com/file/2023/4/84214_0s.png)
java HashMap和HashTable的区别详解
2023-08-10 18:41:56
Java中ArrayList与顺序表的定义与实现方法
2022-06-08 03:27:12
![](https://img.aspxhome.com/file/2023/7/67197_0s.png)
Spring Boot 2.5.0 重新设计的spring.sql.init 配置有啥用
2021-12-04 00:04:43
java生成jar包的方法
2022-06-09 12:22:03
解析spring加载bean流程的方法
2023-11-29 13:50:32
![](https://img.aspxhome.com/file/2023/2/60062_0s.png)
springboot跨域如何设置SameSite的实现
2022-08-03 21:27:07
![](https://img.aspxhome.com/file/2023/9/89609_0s.jpg)
springMVC如何将controller中Model数据传递到jsp页面
2023-05-25 23:46:58
在WPF中实现平滑滚动的方法详解
2021-06-17 06:34:16
解决MyBatis @param注解参数类型错误异常的问题
2023-12-01 06:41:45
Java 中Flyway的使用详解
2022-04-11 03:38:54
![](https://img.aspxhome.com/file/2023/1/132451_0s.png)
微信公众平台开发教程(三) 基础框架搭建
2022-08-12 00:33:50
![](https://img.aspxhome.com/file/2023/5/84485_0s.png)
C#数值转换-显式数值转换表(参考)
2023-05-26 22:26:15
Java和C++通过new创建的对象有何区别?
2022-02-07 10:06:10
![](https://img.aspxhome.com/file/2023/9/67019_0s.png)