分析&回答
策略模式定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换。本模式使得算法的变化不会影响到使用算法的客户。
策略模式将每一个算法封装到一个具有公共接口的独立类中,解除了客户与具体算法的直接耦合,是客户改变算法更为容易。
策略模式+简单工厂+反射+配置文件可以组成更为灵活的方式。

实例代码讲解:
/**
 * 算法的公共接口
 */
abstract public class Strategy{
    public abstract void AlgorithmInterface();
}
/**
 * 具体算法A
 */    
public class ConcreteStrategyA:Strategy{
    public override void AlgorithmInterface(){
        Console.Write("具体算法A");
    }
}
/**
 * 具体算法B
 */    
public class ConcreteStrategyB:Strategy{
    public override void AlgorithmInterface(){
        Console.Write("具体算法B");
    }
}
/**
 * 具体算法C
 */
public class ConcreteStrategyC:Strategy{
    public override void AlgorithmInterface(){
        Console.Write("具体算法C");
    }
}
/**
 * 上下文,用来维护一个对Strategy对象的引用。
 */
public class Context{
    private Strategy strategy;
    public Context(Strategy strategy){
        this.strategy=strategy;
    }
    //上下文接口  
    public void ContextInterface(){
        strategy.AlgorithmInterface();
    }
}
/**
 * client端
 * @param args
 */
static void Main(string[] args)
{
    Context context = new Context(new ConcreteStrategyA());
    context.ContextInterface();
    context = new Context(new ConcreteStrategyB());
    context.ContextInterface();
    context = new Context(new ConcreteStrategyC());
    context.ContextInterface();
    Console.ReadLine();
}
反思&扩展
喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!



