原理图如下: 运算类如下: namespace CalculatorClass { /// <summary> /// 运算类 /// </summary> public class Operation { public double NumberA { get; set; } public double NumberB { get; set; } public virtual double GetResult() { double result = 0; return result; } } /// <summary> /// 加运算 /// </summary> class OperationAdd:Operation { public override double GetResult() { double result = 0; result = NumberA + NumberB; return result; } } /// <summary> /// 减运算 /// </summary> class OperationSub : Operation { public override double GetResult() { double result = 0; result = NumberA - NumberB; return result; } } /// <summary> /// 乘运算 /// </summary> class OperationMul : Operation { public override double GetResult() { double result = 0; result = NumberA * NumberB; return result; } } /// <summary> /// 除运算 /// </summary> class OperationDiv : Operation { public override double GetResult() { double result = 0; if (NumberB==0) { throw new Exception("除数不能为零!"); } result = NumberA / NumberB; return result; } } /// <summary> /// 工厂类 /// </summary> public class OperationFactory { public static Operation CreateOperate(string operate) { Operation operation = null; switch (operate) { case "+": operation = new OperationAdd(); break; case "-": operation = new OperationSub(); break; case "*": operation = new OperationMul(); break; case "/": operation = new OperationDiv(); break; } return operation; } } } /// <summary> /// 客户端调用 /// </summary> /// <returns></returns> public double myOper() { Operation oper ; oper =OperationFactory.CreateOperate("*"); oper.NumberA = 1; oper.NumberB = 2; double result = oper.GetResult(); return result; } 总结:编程是一门技术,更是一门艺术! 不能只满足于写完代码运行结果正确就完事,时常考虑如何让代码更加简练,更加容易维护,扩展和复用,只有这样才可以真正得到提高!