所有的代码都是根据大话设计模式而来的 在没有看设计模式的时候 要我做下面的题目 简易计算器代码 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { try { Console.WriteLine("请输入第一个数"); double a = double.Parse(Console.ReadLine()); Console.WriteLine("请输入您想要运算的符号!"); string Opreation = Console.ReadLine(); Console.WriteLine("请输入第二个数"); double b = double.Parse(Console.ReadLine()); Console.WriteLine("运算后的结果为:{0}", GetResults(a, Opreation, b)); } catch (Exception ex) { Console.WriteLine("输入信息由错误:{0}", ex.Message); } } public static double GetResults(double Pre, string Opreation, double Next) { double Results = 0; switch (Opreation) { case "+": Results = Pre + Next; break; case "-": Results = Pre - Next; break; case "*": Results = Pre * Next; break; case "/": if (Next == 0) { Console.WriteLine("被除数不能为0"); } else { Results = Pre / Next; } break; default: Results = -1; break; } return Results; } } } 看我工厂模式之后代码如下 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Opreation { private double _Number1; public double Number1 { set { _Number1 = value; } get { return _Number1; } } private double _Number2; public double Number2 { set { _Number2 = value; } get { return _Number2; } } public virtual double GetResult(double N1,double N2) { double Results=N1+N2; return Results; } } //加法 class OpreationPlus : Opreation { public override double GetResult(double N1, double N2) { return base.GetResult(N1, N2); } } //减法 class OpreationMinus : Opreation { double Minus = 0; public override double GetResult(double N1, double N2) { Minus = N1 - N2; return Minus; } } //乘法 class OpreationMultiply : Opreation { double Multiply = 0; public override double GetResult(double N1, double N2) { Multiply = N1 * N2; return Multiply; } } //除法 class OprationDivide : Opreation { double Divide = 0; public override double GetResult(double N1, double N2) { if (N2 == 0) { Console.WriteLine("被除数不能为0~~"); } else { Divide = N1 / N2; } return Divide; } } //工厂类 class Factory { //根据不同的操作类型生产不同的实例 public static Opreation FactoryOpreation(string Method) { Opreation Opreation = null; switch (Method) { case "+": Opreation = new OpreationPlus(); break; case "-": Opreation = new OpreationMinus(); break; case "*": Opreation = new OpreationMultiply(); break; case "/": Opreation = new OprationDivide(); break; default: break; } return Opreation; } } class Result { static void Main() { Console.WriteLine("请输入第一个数字"); double Number1 = double.Parse(Console.ReadLine()); Console.WriteLine("请输入您想要运算的符号!"); string Opreation = Console.ReadLine(); Opreation Produce = Factory.FactoryOpreation(Opreation); Console.WriteLine("请输入第二个数字"); double Number2 = double.Parse(Console.ReadLine()); Console.WriteLine("预算后的结果是:{0}", Produce.GetResult(Number1, Number2)); } } }