zoukankan      html  css  js  c++  java
  • GoF之策略模式(Strategy)

    定义

      定义一组算法,并封装每个算法,让它们可以彼此交换使用。策略模式让这些算法在客户端使用它们能更加独立

        在策略模式中,这些不同的计算方式就是所谓的算法,而这些算法中的每一个

    都应该独立出来,将计算的细节加以封装隐藏,并让它们成为一个算法类群组。客户端

    只需根据情况来选择对应的算法即可,至于计算方式及规则,客户端不需要去理会。


     

    策略模式和状态模式

      两者的结构类图十分相似,两者都被GoF归类在行为模式(Behavioral Patterns)分类下,

    都是由一个Context类来维护对象引用,并借此调用提供功能的方法。

      State是在一群状态中进行切换,状态之间由对应和连接的关系;Strategy则是由一群没有

    任何关系的类所组成的,不知道彼此的存在。

      State受限于状态机的切换规则,在设计的初期就会定义所有可能的状态,就算后期追加也

    需要和现有的状态有所关联,而不是想加入就加入;Strategy是由封装计算方法而形成的一种

    设计模式,算法之间不存在任何的依赖关系,有新增的算法就可以马上加入或者替换。  


    策略模式的应用

      角色扮演型游戏(RPG)的属性计算系统,使用到“转换计算”的方式来获取角色最终要使用的属性

      网络游戏的注册账号的方式等等

      因条件不同而需要有所选择时,刚入门的时候我们可能都会第一想到的是switch case语句

    或者if else来实现,但遇到有一定规模需要长期维护的项目时候,最好选用策略模式,这样将有

    利于项目的维护。

      将复杂的公式计算从客户端独立出来成为一个群组,之后客户端可以按照情况来决定使用的

    计算公式策略,既可以提高系统应用的灵活程度,也强化了系统中对所有计算策略的维护方式。让

    后续开发人员很容易就找出相关计算公式的差异,同时将修改点也缩小到计算公式本身,不会影响到

    客户端。

     

     

      

      

      

  • 相关阅读:
    优秀JS学习站点
    一些比较好的论坛、博客
    最全前端问题及答案总结[转]
    EDM制作要点
    前端技术-调试工具(下)
    前端技术-调试工具(上)
    smartJQueryZoom(smartZoom) 的使用方法
    修改博客园日历的默认样式
    smartJQueryZoom(smartZoom) 存在的兼容性BUG,以及解决方法
    javascript实战 : 简单的颜色渐变
  • 原文地址:https://www.cnblogs.com/springword/p/8245206.html
Copyright © 2011-2022 走看看