定义一系列算法,使得可以互相替换,独立于客户的变化。
1.避免了"If Else Then"
2.客户不需要知道每个策略里的数据结构。
3.客户需要创建具体需要哪一种Stragegy通过私有Strategy变量
Sample Code:
public abstract class Strategy
{
abstract public void DoAlgorithm();
};
public class ConcreteStrategy1 : Strategy
{
public override void DoAlgorithm()
{
Console.WriteLine("ConcreteStrategy1 implementation");
}
};
public class ConcreteStrategy2 : Strategy
{
public override void DoAlgorithm()
{
Console.WriteLine("ConcreteStrategy2 implementation");
}
};
public class Context
{
private Strategy algorithm;
public Strategy Algorithm
{
set { algorithm = value; }
get { return algorithm; }
}
public void DoStrategyWork()
{
algorithm.DoAlgorithm();
}
};