设计模式--简单工厂模式之计算器

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

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

 

    原文作者:张杨
    原文地址: http://www.cnblogs.com/JsonZhangAA/p/5462105.html
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞