简单工厂模式:封装了创建具体类的过程,通过工厂动态创建具体的对象,但是违背了开放封闭原则,所以必要时可以将简单工厂模式演变为反射+抽象工厂模式. public class Operation { private double num1; private double num2; public double Num1 { get { return num1; } set { num1 = value; } } public double Num2 { get { return num2; } set { num2 = value; } } public virtual double GetResult() { double ret = 0; return ret; } } public class OperationAdd:Operation { public override double GetResult() { return Num1 + Num2; } } public class OperationSub:Operation { public override double GetResult() { return Num1 - Num2; } } public class OperationMul:Operation { public override double GetResult() { return Num1 * Num2; } } public class OperationDiv:Operation { public override double GetResult() { double value = 0; if (Num2 == 0) { throw new Exception("除数不能为零"); } value = Num1 / Num2; return value; } } public class OperationFactory { public static Operation GetOperation(string operationStr) { Operation opr=null; switch (operationStr) { case "+": opr = new OperationAdd(); break; case "-": opr = new OperationSub(); break; case "*": opr = new OperationMul(); break; case "/": opr = new OperationDiv(); break; } return opr; } } class Program { static void Main(string[] args) { #region 简单工厂模式 //简单工厂模式:封装了创建具体类的过程,通过工厂动态创建具体的对象 Console.WriteLine("简单工厂模式运行效果:"); Operation opr = OperationFactory.GetOperation("*"); opr.Num1 = 5; opr.Num2 = 6; Console.WriteLine("策略模式的运行结果:5*6=" + opr.GetResult()); #endregion } }