设计模式之策略模式

策略模式:策略模式主要用于算法多且容易改变的场景,例如商场打折促销,由于它的业务规则没有定性,需要经常的改变,假如我们根据某一个规则进行业务的开展,势必会依赖于具体的实例,就违背了依赖倒转原则,也就是说我们不能面向实例编程,应当面向接口编程!策略也是设计模式中开放封闭原则的有效地体现!!

Strategy.CS代码:

    abstract class Strategy
    {
        public abstract void AlgorithmInterface();
    }

    class ConcreteStrategyA : Strategy
    {
        public override void AlgorithmInterface()
        {
            Console.WriteLine("算法A的实现");
        }
    }
        class ConcreteStrategyB: Strategy
      {
          public override void AlgorithmInterface()
          {
             Console.WriteLine("算法B的实现");
          }
      }

        class ConcreteStrategyC: Strategy
        {
            public override void AlgorithmInterface()
            {
                Console.WriteLine("算法C的实现");
            }
        }

Contex.CS代码:

    class Context
    {
        Strategy strategy;
        public Context(Strategy strategy)
        {
            this.strategy = strategy;
        }

        public void ContextInterface()
        {
            strategy.AlgorithmInterface();
        }
    }

主程序:

        static void Main(string[] args)
        {
            Context context;
            context=new Context(new ConcreteStrategyA());
            context.ContextInterface();

            context = new Context(new ConcreteStrategyB());
            context.ContextInterface();

            context = new Context(new ConcreteStrategyC());
            context.ContextInterface();
        }


 

posted on 2009-09-19 00:20  晴天1848  阅读(199)  评论(0)    收藏  举报