策略模式——学习《大话设计模式》
策略模式(Strategy):它定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。【DP】
//抽象算法类 abstract class Strategy { //算法方法 public abstract void AlgorithmInderface(); } //ConcreteStrategy,封装了具体的算法或行为,继承与Strategy //具体算法A class ConcreteStrategyA:Strategy { //算法A实现方法 public ovveride void AlgorithmInderface() { ............. } } //具体算法B class ConcreteStrategyB:Strategy { //算法B实现方法 public ovveride void AlgorithmInderface() { ............. } } //具体算法C class ConcreteStrategyC:Strategy { //算法C实现方法 public ovveride void AlgorithmInderface() { ............. } } //Context,有一个ConcreteStrategy来配置,维护一个Strategy对象的引用 //上下文 public class Context { Strategy strategy; public Context(Strategy strategy) { //初始化时传入具体的策略对象 this.strategy=strategy; } //上下文接口 public void ContextInderface() { //根据具体的策略对象,调用其算法的方法 strategy.AlgorithmInterface(); } } //客户端代码 public static void Main(String[] args) { //由于实例化不同的策略,所以最终在调用ContextInderface()时,所有获得的结果就不尽相同 Context context; context=new Context(new ConcreteStrategyA()); context.ContextInderface(); context=new Context(new ConcreteStrategyB()); context.ContextInderface(); context=new Context(new ConcreteStrategyC()); context.ContextInderface(); }