• 策略模式


    最近工作比较忙,一直没有时间来写文章,今天就简单的写下策略模式。

           今天要实现的是一个商场收银软件,当然首先我们会采用上期讲的用简单工厂模式来实现,其具体的实现参考代码http://download.csdn.net/detail/txtfashion/5078259

           那么用简单工厂模式来实现存在什么缺陷呢,因为商场经常性地更改打折额度和返利额度,每次维护或扩展收费方式读要改动这个工厂,以致代码需要重新编译。因此我们需要找到一种适应算法经常改动的模式。下面就要引出策略模式。

           策略模式是一组算法,将每个算法都封装起来,并且使他们之间可以互换。此模式让算法的变化,不会影响到使用算法的客户。

           策略模式是一种定义一系列算法的方法,从概念上来看,所有这些算法完成的都是相同的工作,只是实现不同,它可以以相同的方式调用所有的算法,减少算法类与使用算法类之间的耦合。

           策略模式的Strategy类层为Context定义了一系列的可重用的算法或行为,继承有足浴析取这些算法中的公共功能。另外,它简化了单元测试,因为每个算法独有自己的类,可以通过自己的接口单独测试。

           策略模式就是用来封装算法的,但在实践中,我们发现可以用它来封装几乎任何类型的行为,只要在分析过程中听到需要在不同时间应用不同业务规则,就可以考虑使用策略模式处理这种变化的可能性。但基本的策略模式中,选择用具体的实现的职责有客户端对象承担,并转给策略模式的Context对象。这本身没有解除客户端需要选择判断的压力,而策略模式与简单工厂模式结合后,选择具体的职责也可以有Context来承担,这就最大减轻了了客户端的职责。

             策略模式的实现具体见http://download.csdn.net/detail/txtfashion/5090477

  • 相关阅读:
    Silverlight Binding之ConverterParameter
    .Net 深克隆与浅克隆实践笔记
    oracle中的锁机制
    .Net生成GUID号
    微软经典面试题之一——16个硬币问题
    C# string.Format 与+性能比较
    c#实现最简快速排序,你绝对可以看懂
    hdu 1204 糖果大战
    hdu 1166 敌兵布阵
    nyoj 7 喷水装置一
  • 原文地址:https://www.cnblogs.com/txtfashion/p/2945145.html
Copyright © 2020-2023  润新知