策略模式——学习《大话设计模式》
策略模式(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();
}

浙公网安备 33010602011771号