设计模式之策略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();
}
}
浙公网安备 33010602011771号