using System; using System.Collections.Generic; using System.Text; namespace EasyFactory { class Program { static void Main(string[] args) { Console.WriteLine("请输入运算符"); //调用工厂类生成一个Operater类型的对象 Operater ope=Factory.GetOperater(Console.ReadLine()); Console.WriteLine("请输入要运算的第一个数"); ope.NumberA = double.Parse(Console.ReadLine()); Console.WriteLine("请输入要运算的第二个数"); ope.NumberB= double.Parse(Console.ReadLine()); double result = ope.GetResult(); Console.WriteLine("运算结果是{0}",result); } } class Operater { private double numberA; public double NumberA { get { return numberA; } set { numberA = value; } } private double numberB; public double NumberB { get { return numberB; } set { numberB = value; } } public virtual double GetResult() { double result = 0; return result; } } /// <summary> /// 加法运算 /// </summary> class Add : Operater { public override double GetResult() { double result = 0; result = NumberA + NumberB; return result; } } /// <summary> /// 减法运算 /// </summary> class Sub : Operater { public override double GetResult() { double result = 0; result = NumberA - NumberB; return result; } } /// <summary> /// 乘法运算 /// </summary> class Mul : Operater { public override double GetResult() { double result = 0; result = NumberA * NumberB; return result; } } /// <summary> /// 除法运算 /// </summary> class Div : Operater { public override double GetResult() { double result = 0; if (NumberB == 0) { throw new Exception("除数不能为0"); } result = NumberA / NumberB; return result; } } /// <summary> /// 工厂 /// </summary> class Factory { private static Operater ope; public static Operater GetOperater(string operater) { switch(operater) { case "+": ope=new Add(); break; case "-": ope = new Sub(); break; case "*": ope = new Mul(); break; case "/": ope = new Div(); break; } return ope; } } }