策略模式(Strategy):它定义了算法家族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。
说白了策略模式要处理的是选择使用哪一种算法,而不是实例化一个对象。
策略模式的基本代码
Strategy类,定义所有支持的算法和公共接口
abstract class Strategy
{
//算法方法
public abstract void AlgorithmInterface();
{
ConcreteStrategy类,封装了具体的行为或算法,继承Strategy
class ConcreteStrategyA:Stratrgy
{
public override AlgorithmInterface()
{
Console.WriteLine("算法A实现");
}
}
class ConcreteStrategyB:Stratrgy
{
public override AlgorithmInterface()
{
Console.WriteLine("算法B实现");
}
}
class ConcreteStrategyC:Stratrgy
{
public override AlgorithmInterface()
{
Console.WriteLine("算法C实现");
}
}
Context,用一个ConcreteStrategy配置,维护对一个Strategy对象引用
class Context
{
Strategy stratgy;
public Context(Strategy strategy)
{
this.Strategy = strategy;
}
public void ContextInterface()
{
strategy.AlgotithmInterface();
}
调用
static void Main(String[] args)
{
Context context;
context = new Context(new ConcreteStrategyA());
context.ContextInterface();
}
由于实例化不同的策略,最终在调用context.ContextInterface()时,所得到的结果就不尽相同