设为首页 加入收藏

TOP

设计模式--简单工厂模式之计算器
2019-09-03 01:52:51 】 浏览:16
Tags:设计模式 简单 工厂 模式 计算器

主要利用工厂模式来实现了一个计算器,将加减乘除操作分离了开来,实现了低耦合的目标。

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 设计模式___计算器 { public class Operation { double numA; public double NumA { get { return numA; } set { numA = value; } } double numB; public double NumB { get { return numB; } set { numB = value; } } public virtual string GetResult()//将这个方法写成虚拟的,方便下面的加减乘除按照各自的需要在对方法进行重写即可。 { return "error"; } } class OperationAdd : Operation { public override string GetResult()//重写GetResult()方法,实现两数想加的功能。 { return (NumA + NumB).ToString(); } } class OperationSub : Operation { public override string GetResult()//重写了GetResult()方法,实现了两数相减的功能。 { return (NumA - NumB).ToString(); } } class OperationChen : Operation { public override string GetResult()//重写GetResult()方法,实现了两数相乘的目标。 { double result = NumA * NumB; return result.ToString(); } } class OperationChu : Operation { public override string GetResult()//重写GetResult()方法,实现两数相除的目标。 { double result; if (NumB == 0)//注意判定被除数是否为零的问题。 { return "除数不能为空!"; } else { result = NumA / NumB; return result.ToString(); } } } public class OperationFactory { public static Operation GetOperation(string str)//写了一个静态方法,实现了根据不同的运算符来构造不同的运算对象。 { Operation p = new Operation();//由于Operation为基类,所以它可以接受其他的子类。 switch (str) { case "+": p = new OperationAdd(); break; case "-": p = new OperationSub(); break; case "*": p = new OperationChen(); break; case "/": p = new OperationChu(); break; } return p; } } class Program { static void Main(string[] args) { int numA, numB; string C; string result = null; Console.WriteLine("请输入第一个数:\n"); numA = int.Parse(Console.ReadLine()); Console.WriteLine("请输入操作符:\n"); C = Console.ReadLine(); Console.WriteLine("请输入第二个数:\n"); numB = int.Parse(Console.ReadLine()); Operation p = OperationFactory.GetOperation(C); p.NumA = numA; p.NumB = numB; Console.WriteLine("结果为:\n"); Console.WriteLine(p.GetResult()); Console.ReadLine(); } } }

 

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇设计模式-实践-工厂模式 下一篇Factory Method(工厂方法)-对象..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目