该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。策略模式属于对象行为模式,它通过对算法进行封装,把使用算法的责任和算法的实现分割开来,并委派给不同的对象对这些算法进行管理。
我们通过一个活动策划来举例策略模式,如商城中的店铺搞促销活动,有时活动是买一送一,有时候是全场八折。
抽象策略类(活动共同的接口)
public interface IStrategy
{
void show();
}
具体策略角色,对策略类进行活动A“买一送一”,活动B“全场八折”的具体实现
public class StrategyA : IStrategy
{
public void show()
{
Console.WriteLine("买一送一");
}
}
public class StrategyB : IStrategy
{
public void show()
{
Console.WriteLine("全场8折!");
}
}
public class Context
{
private IStrategy _strategy;
public Context(IStrategy strategy)
{
_strategy = strategy;
}
public void salesManShow()
{
_strategy.show();
}
}
测试类
class MyClass
{
public static void Main(string[] args)
{
var contextA = new Context(new StrategyA());
contextA.salesManShow();
var contextB = new Context(new StrategyB());
contextB.salesManShow();
}
}
运行结果!