【2016-10-14】【坚持学习】【Day5】【策略模式】

今天学了策略模式

例子

一个售票系统,针对不同的用户使用不用的计价方式,

环境类:一个业务场景(电影票累,)

抽象类:计价算法

具体实现类: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();
……

作者:zscmj
出处:http://www.cnblogs.com/zscmj/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

原文地址:https://www.cnblogs.com/zscmj/p/5960330.html