设计模式之策略模式
2010-11-18 13:50
295 查看
策略模式:封装了变化,在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 } }
相关文章推荐
- Java设计模式之策略模式
- 设计模式22——行为型模式之策略模式
- java设计模式之——策略模式
- iOS设计模式 - 策略模式
- 设计模式(15)-策略模式
- 设计模式策略模式(StrategyPattern)
- PHP设计模式实例之(观察者模式、策略模式、简单工厂模式)
- 设计模式(10)---->策略模式
- java 策略设计模式
- 浅谈Java设计模式之---策略模式
- 设计模式------------策略模式
- 天天学设计模式2-策略模式
- java策略设计模式
- 设计模式 -- 策略模式
- Java设计模式之_Strategy(策略)_DesignPattern
- 设计模式之策略模式(strategy)
- 设计模式之策略模式(strategy pattern)
- 设计模式系列--策略模式
- 设计模式之--策略模式
- 每日设计模式之策略模式