zoukankan      html  css  js  c++  java
  • 【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/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    (转)CString,int,string,char*之间的转换
    Nt函数原型
    VC 创建窗口
    设置网络延时大小
    利用寄存器进入栈值交换
    控制用户控件里面的值
    jquery animate()动画函数
    终于有点时间了
    JQuery学习笔记(三)遮罩层、阴影层
    jquery表格隔行换色
  • 原文地址:https://www.cnblogs.com/zscmj/p/5960330.html
Copyright © 2011-2022 走看看