当我们有很多算法策略时,比如商城根据不同节庆有不同的优惠活动,我们就会使用到不同的算法策略对商品进行优惠,就可以考虑用策略模式。
代码如下:
namespace DiagramMode
{
class Program
{
static void Main(string[] args)
{
Context c ;
//根据需求执行某一个策略
c= new Context(new StrategyA());
c.RunStrategyFunc();
Console.ReadLine();
}
}
/// <summary>
/// 定义抽象策略类。
/// </summary>
public abstract class Strategy
{
public abstract void StrategyFunc();
}
//具体策略类
public class StrategyA : Strategy
{
public override void StrategyFunc()
{
Console.WriteLine("执行具体策略A方法");
}
}
public class StrategyB : Strategy
{
public override void StrategyFunc()
{
Console.WriteLine("执行具体策略B方法");
}
}
/// <summary>
/// 连接上下文,提供给客服端调用,根据传入的策略执行当前的策略方法
/// </summary>
public class Context
{
Strategy currStrategy;
public Context(Strategy stra)
{
currStrategy = stra;
}
/// <summary>
/// 执行当前具体的一个策略的方法
/// </summary>
public void RunStrategyFunc()
{
currStrategy.StrategyFunc();
}
}
}