同样是排序算法,你可以选择冒泡排序、选择排序、插入排序、快速排序等等,也即是说,为了实现排序这一个目的,有很多种算法可以选择。这些不同的排序算法构成了一个算法族,你可以在需要的时候,根据需求或者条件限制(内存、复杂度等)适时选择具体的算法。

在面向对象的设计里,该如何设计这样一个算法族呢?它包含了多种算法,在使用的时候又会根据条件来选择具体的算法?这就会用到软件设计模式中的——策略模式。

1.策略模式简介

策略模式用于算法的自由切换和扩展,对应于解决某一问题的一个算法族,允许用户从该算法族中任意选择一个算法解决问题,同时还可以方便地更换算法或者增加新的算法。策略模式将算法族中的每一个算法都封装成一个类,每一个类称为一个策略(Strategy)。

策略模式:

定义一系列算法,将每一个算法封装起来,并让它们可以相互替换。策略模式让算法可以独立于使用它的客户而变化。

如何管理和维护算法族?只需知道策略模式相关推荐

  1. 算法的封装与切换——策略模式

    本文转载自 :http://blog.csdn.net/lovelion/article/details/7818983 俗话说:条条大路通罗马.在很多情况下,实现某个目标的途径不止一条,例如我们在外 ...

  2. 算法的封装与切换——策略模式(一)

    俗话说:条条大路通罗马.在很多情况下,实现某个目标的途径不止一条,例如我们在外出旅游时可以选择多种不同的出行方式,如骑自行车.坐汽车.坐火车或者坐飞机,可根据实际情况(目的地.旅游预算.旅游时间等)来 ...

  3. java策略管理_详解Java编程中的策略模式

    策略模式属于对象的行为模式.其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换.策略模式使得算法可以在不影响到客户端的情况下发生变化. 策略模式的结构 策略模式 ...

  4. 选择排序算法,只需这篇文章就够了

    一.说在前面 一直想写一些简单易懂的文章,因为平时看的很多的书籍或者文章都是看着很难受的感觉,当然,这并不是说书籍写的不好,只是说对于一些没有太多基础或者基础不是很好的来说,相对来说还是比较难以理解的 ...

  5. 华为可以看游戏时长吗_有效管理孩子游戏时长 只需开启华为P10学生模式

    标签:华为p10(2550)双摄像头(84)华为(5027) 眼看暑假已经接近尾声,不知道各位学生党们的暑假作业有没有完成?而与暑期作业相比,更让家长们头疼的是,如今越来越多的孩子无论是在学校还是在家 ...

  6. 程序员该如何管理后宫:怎样哄女孩儿(策略模式)

    0x00 前言 试问,哪个帝王不想开疆拓土,成就万世之霸业,流传千古?! 朕,虽坐享盛世,仍不忘对外扩张以彰显国威. 近日上朝,有大臣上奏,近邻女儿国因缺乏壮丁,国力衰弱,正是入侵的最好时机.朕当然批 ...

  7. 算法族的集中管理——策略模式

    策略模式是指对一系列的算法定义,并将每一个算法封装起来,而且使它们还可以相互替换.策略模式让算法独立于使用它的客户而独立变化. 我们正好可以使用策略模式加适配器模式来将查找算法的调用重新架构. 分角色 ...

  8. 微信会员卡管理系统:店铺智慧化管理和营销,只需一款软件

    微信会员卡管理系统:店铺智慧化管理和营销,只需一款软件 店铺智慧化管理和营销的时代 对于传统的实体店铺行业来说,不论是连锁品牌店铺还是单独的店铺,都离不开会员管理这个难题. 会员如何管理是连接店铺与顾 ...

  9. 灵魂画手必读:只需完成手画线稿,让AI算法帮你自动上色

    真正值得的东西从来不会轻易得到 测试图片如下 作者:叶庭云 来源: 修炼Python 一.生成线稿 图像手绘效果的特征:黑白灰色.边界线条较重.相同或相近色彩趋于白色.略有光源效果.手绘风格是在对图像 ...

最新文章

  1. 内容管理系统 Nuxeo认证绕过和RCE漏洞(CVE-2018-16341) 分析
  2. Box-Cox(python实现)
  3. Django中Ajax提交数据的CSRF问题
  4. Elasticsearch全量数据增量遍历实现原理
  5. Eclipse 里找不到 Servers 面板的原因和处理办法
  6. Scala语言编译之后生成的Java代码解读
  7. 20220215-CTF-MISC-BUUCTF-爱因斯坦-binwalk分析图片-dd命令分离ZIP文件--图片属性中寻找密码
  8. 实现ABP中Person类的权限功能
  9. insert exec 语句不能嵌套_Python基础入门知识点——if 语句简介
  10. 当代年轻人加班报告!
  11. 计算机存储信息的单位
  12. linux英特尔蓝牙驱动,IntelBluetoothFirmware 英特尔蓝牙驱动
  13. Vbs脚本编程简明教程之六
  14. 计算机五笔是什么时候学的吗,现在还有人学五笔么
  15. Win10声卡驱动正常但没声音怎么办?驱动人生解决办法
  16. 计算机英语四六级成绩查询,全国四六级英语成绩查询入口网址-http://cet.neea.edu.cn/cet...
  17. 医学成像学习笔记(一):核磁共振成像(MRI)k空间为何是图像频谱详解
  18. 三个条件的if函数c语言,if函数如何设置多个条件
  19. AccessKey泄露利用
  20. 搭建基于XDEBUG的调试环境

热门文章

  1. javascript知识点_一点点JavaScript知识是第1部分很危险的事情
  2. SLAM14讲_ch7_编译问题汇总
  3. 餐饮小程序系统开发|小程序对餐饮行业商家有什么优势?
  4. M401a系列:armbian下docker安装openwrt做旁路由
  5. SpringBoot使用前缀树实现敏感词的过滤
  6. 使用flash 解决 h5 直播推流
  7. CAN诊断的寻址方式
  8. MVC+EF开发模式总结
  9. SPC Control Chart Tools for .Net Crack
  10. new String(abc)与String a=abc的区别