风动破

导航

设计模式之策略Strategy

我们达到了在运行期间,可以自由切换算法的目的。 
实际整个Strategy的核心部分就是抽象类的使用,使用Strategy模式可以在用户需要变化时,修改量很少,而且快速.
 Strategy和Factory有一定的类似,Strategy相对简单容易理解,并且可以在运行时刻自由切换。
 Factory重点是用来创建对象。 
 Strategy适合下列场合: 
 1.以不同的格式保存文件;
 2.以不同的算法压缩文件;
 3.以不同的算法截获图象; 
 4.以不同的格式输出同样数据的图形,比如曲线 或框图bar等

 

 

    public interface IRepTempRule
    {
        void Execute();
    }
    public class RepTempRuleA :IRepTempRule{     
        public void Execute()
        {
            Console.WriteLine("算法1");
        }
    }
    public class RepTempRuleB : IRepTempRule {     
        public void Execute()
        {
            Console.WriteLine("算法2");
        }
    }
    public class RepTempRuleSolve {
        private IRepTempRule strategy;
        public RepTempRuleSolve(IRepTempRule strategy) 
        {
            this.strategy = strategy;
        }
        public void Execute() 
        {
            strategy.Execute();
        }
        public void changeRule(IRepTempRule rule) 
        {
            this.strategy = rule;
        }
    }
    public class TestStrategy 
    {
        //灵活切换算法
        public TestStrategy() 
        {
            RepTempRuleSolve solve = new RepTempRuleSolve(new RepTempRuleB());
            solve.Execute();
            solve.changeRule(new RepTempRuleA())
                solve.Execute();
        }
    }

posted on 2015-04-28 14:33  风动破  阅读(81)  评论(0)    收藏  举报