策略模式(stragegy)

定义了算法族,分别封装起来,让它们之间可以相互替换,此模式让算法独立于使用算法的客户(Head First 设计模式)。

   策略模式,针对接口编程,而不依赖于具体的实现。所以可以在运行时动态改变具体类的行为。主要有涉及三个角色环境角色类,抽象策略角色,具体策略角色。其中环境角色持有个策略类的引用,最终给客户端调用。

   策略类实现了具体的策略接口。运行时客户端可以动态的为环境类注入策略接口的实现类。

    

  客户端可调用具体类。并在运行时动态的为具体类设置策略接口的实现类。文章参考自Head First设计模式中文版

转载于:https://www.cnblogs.com/mxmbk/p/5064628.html

策略模式(stragegy)相关推荐

  1. [设计模式] javascript 之 策略模式

    策略模式说明 定义: 封装一系列的算法,使得他们之间可以相互替换,本模式使用算法独立于使用它的客户的变化. 说明:策略模式,是一种组织算法的模式,核心不在于算法,而在于组织一系列的算法,并且如何去使用 ...

  2. 【Design pattern】简单工厂过渡策略模式

    把自己当做小菜来跟学<大话设计模式>,跟着故事的思路来走 简单工厂模式:实现一个计算器代码 策略模式:商场打折代码 根据大鸟和小菜的故事,一步步的完善问题的过程!

  3. 设计模式 之美 -- 策略模式

    策略模式作为行为型设计模式中的一种,主要封装相同功能的不同实现算法,用于在用户程序内部灵活切换.对用户来说能够快速替换对应的算法,能够让算法的实现独立于使用的用户. 基本的UML类图如下: 用户使用S ...

  4. 设计模式之策略模式(Strategy)摘录

    23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而 ...

  5. Java中的策略模式实例教程

    策略模式是一种行为模式.用于某一个具体的项目有多个可供选择的算法策略,客户端在其运行时根据不同需求决定使用某一具体算法策略. 策略模式也被称作政策模式.实现过程为,首先定义不同的算法策略,然后客户端把 ...

  6. else 策略模式去掉if_设计模式(三)——简单的状态模式代替if-else

    博主将会针对Java面试题写一组文章,包括J2ee,SQL,主流Web框架,中间件等面试过程中面试官经常问的问题,欢迎大家关注.一起学习,一起成长. 前言 大多数开发人员现在还在使用if else的过 ...

  7. C++模式学习------策略模式

    当遇到同一个对象有不同的行为,方法,为管理这些方法可使用策略模式. 策略模式就是对算法进行包装,是把使用算法的责任和算法本身分割开来.通常把一个系列的算法包装到一系列的策略类里面,这些类继承一个抽象的 ...

  8. 模板方法模式与策略模式的区别

    2019独角兽企业重金招聘Python工程师标准>>> 模板方法模式:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中.模板方法使得子类可以在不改变算法结构的情况下,重新定义 ...

  9. 【设计模式】 模式PK:策略模式VS状态模式

    1.概述 行为类设计模式中,状态模式和策略模式是亲兄弟,两者非常相似,我们先看看两者的通用类图,把两者放在一起比较一下. 策略模式(左)和状态模式(右)的通用类图. 两个类图非常相似,都是通过Cont ...

最新文章

  1. 【面试】我是如何在面试别人Spring事务时“套路”对方的
  2. bzoj 2457 [BeiJing2011]双端队列 模拟+贪心
  3. 哪种修复redis未授权访问漏洞的方法是相对不安全的_关于Linux挖矿、DDOS等应急事件处置方法...
  4. Eclipse配置C++时的三个关键环境变量
  5. 计算机类对口升学都可以升啥专业,计算机专业对口升学专业试题.doc
  6. destroy意思中文翻译_destroy是什么意思_ destroy的翻译_音标_读音_用法_例句_爱词霸在线词典...
  7. 初解vue脚手架vue-cli,及demo示例(一)
  8. sublime text 64位_Python学习第一步 - 用Sublime搭建Python运行环境
  9. linux shell中的单引号与双引号的区别(看完就不会有引号的疑问了)(转)
  10. 自动驾驶-激光雷达预处理/特征提取
  11. limeSurvey资料
  12. Java Timer
  13. 下载Youtube单个视频和播放列表的方法详细教程
  14. 三维von Mises-Fisher分布的均值方差
  15. php sql多字段求和,JSP_sql实现多字段求和并查询,下面就sql多字段求和并作为sql - phpStudy...
  16. LiDARTag:一种基于点云的实时估计基准标记物位姿的系统
  17. 反爬与反反爬常见知识点
  18. 本科毕业论文内容必须有国内外文献综述吗?
  19. 快手7亿用户增长实践
  20. 一个游戏制作的全过程

热门文章

  1. 疯了,家里的网速慢的不是一星半点
  2. 有关JNLP中传SESSIONID为参数的问题
  3. 为什么方差的自由度是n-1啦?
  4. download first at netease music
  5. price ceiling
  6. challenges at investment bank
  7. 基于便签纸的无限延生学习方法
  8. if you can not get the full version within 1 minute
  9. tableau prep builder也是不支持m1芯片。。。
  10. UE4材质:只在石头缝中刷草