策略模式——学习《大话设计模式》

策略模式(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();
}

  

posted @ 2012-01-09 23:02  liyijiu  阅读(179)  评论(0编辑  收藏  举报