今天学了策略模式
例子
一个售票系统,针对不同的用户使用不用的计价方式,
环境类:一个业务场景(电影票累,)
抽象类:计价算法
具体实现类:5折算法,满100减20算法,。。。。。
抽象策略类
abstract class AbstractStrategy
{
public abstract void Algorithm(); //声明抽象算法
}
具体策略类
class ConcreteStrategyA : AbstractStrategy
{
//算法的具体实现
public override void Algorithm()
{
//算法A
}
}
环境类
class Context
{
private AbstractStrategy strategy; //维持一个对抽象策略类的引用
public void SetStrategy(AbstractStrategy strategy)
{
this.strategy = strategy;
}
//调用策略类中的算法
public void Algorithm()
{
strategy.Algorithm();
}
}
运行
……
Context context = new Context();
AbstractStrategy strategy;
strategy = new ConcreteStrategyA(); //可在运行时指定类型,通过配置文件和反射机制实现
context.SetStrategy(strategy);
context.Algorithm();
……