[本文是自己学习所做笔记。欢迎转载,但请注明出处:http://blog.csdn.net/jesson20121020]

  上面3节实现了从最初的对整形数组排序到最后能够对全部类型都能够依据须要定义自已的比較器进行排序,这里面不同的比較器,实现了不同的算法。而且单独成一个类。在应用时,能够依据实际须要灵活选择,可扩展性强,事实上这里就用到了策略模式。

  策略模式Strategy是属于设计模式中对象行为模式型模式,主要是定义 一系列的算法,把这些算法一个个封装成单独的类,比方以上三节中的比較器。策略模式应用比較广泛。如学校的流量变化图。可能有两种实现方式,一个是拆线。一个是饼状形表示,又如。我们上述3节中的Cat类型的高度比較器。重量比較器。通过 定义不同的策略,我们达到了在程序执行期间,能够自由切换算法的上的。

  实际整个策略模式的核心部分就是抽象类或接口的使用。使用策略模式能够在用户须要变化时,改动代码量非常少。并且高速。

  策略模式和工厂模式有一定的类似。

策略械相对简单easy理解,而且能够在执行时刻自由切换。而工厂模式主要是用来创建对象的。

  

  策略模式适合下列场合:

  1. 以不同的格式保存文件

  2. 以不同的算法压缩文件

  3. 以不同的算法截获图像

  4. 以不同的格式输出相同数据的图形,如曲线。Bar等。

  ...... 

  总之,一句话。策略模式适合于实际开发中遇到的“要以不同的算法。不同的格式等实现同样的功能”的情形。

策略模式的决定权在用户,系统本身提供不同算法的实现,对各种算法做封装。因此。策略模式多用在算法决策系统中。外部用户仅仅须要决定用哪个算法就可以。

最新文章

  1. yy_model及 YYLabel
  2. cocostudio做出来的界面如何进行分辨率适配,兼论cocos2dx3的多分辨率适配机制,以及retina适配机制
  3. webform内置对象
  4. JdbcTemplate操作数据库
  5. 开源项目 Modbus C#实现
  6. c/c++数组名和指针区别深入探索
  7. 5 MySQL索引
  8. 网站URL重写(Java UrlRewrite 的使用)
  9. laravel5.2/laravel5.3入门指南 Windows 上快速安装并运行 Laravel 5.x
  10. 学习笔记之09小练习题(js:从小到大输出三个任意数,查成绩,相亲题,查体重,一元二次方程求根)
  11. 面试常用算法总结——排序算法(java版)
  12. Linux 环境 Intelij Idea 安装与快捷图标配置
  13. webstorm的相关操作
  14. C++ WString与String互相转换
  15. awk选取制定行数,条件判断等
  16. hdu 3397 Sequence operation (线段树 区间合并 多重标记)
  17. javascript中break与continue,及return的区别
  18. PHP获取Linux当前目录下文件并实现下载功能
  19. sql 中有关时间的语句
  20. HTTPS的安全性

热门文章

  1. MySQL索引的用处
  2. vue工程化引入组件模板
  3. java_String类的功能
  4. shell learning note
  5. MATLAB优化——减少for的使用
  6. 笔试算法题(28):删除乱序链表中的重复项 & 找出已经排好序的两个数组中的相同项
  7. 零基础入门学习Python(16)--序列!序列!
  8. 源码学习-String类
  9. 【BZOJ 1202】 [HNOI2005]狡猾的商人 (加权并查集)
  10. [bzoj2822][AHOI2012]树屋阶梯 (卡特兰数+分解质因数+高精度)