策略模式:封装了变化,在context类的内部实现业务逻辑,UI层无需知道具体的逻辑 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; } } /// <summary> /// 策略模式:封装了变化 /// </summary> public class OperationContext { Operation opr; public OperationContext(string operationStr,double num1,double num2) { switch (operationStr) { case "+": opr = new OperationAdd(); break; case "-": opr = new OperationSub(); break; case "*": opr = new OperationMul(); break; case "/": opr = new OperationDiv(); break; } opr.Num1 = num1; opr.Num2 = num2; } public double GetResult() { return opr.GetResult(); } } class Program { static void Main(string[] args) { #region 策略模式 //策略模式:封装了变化,在context类的内部实现业务逻辑,UI层无需知道具体的逻辑 Console.WriteLine("策略模式运行效果:"); OperationContext oc = new OperationContext("+", 5, 6); Console.WriteLine("策略模式的运行结果:5+6=" + oc.GetResult()); #endregion } }