一.简介:

策略模式:

背景:商店要打折销售,各种版本的销售方式,让小菜心烦意乱

内容:    定义算法家族,分别封装起来,让他们之间可以户型替换,此模式让算法的变化,不会影响到使用算法的用户。

图文并茂:

有图可以简单明了地知道,这是一种方法选择模式,具体的策略类封装了具体的算法(行为),继承了策略类;
那有一个简单的书上的例子,当商店遇到节日搞活动的时候,会采取不同的销售方式来扩大销售量,有 买一送一、买五送三等方式,可是,具体采用什                                  么方式只有老板知道,编程序的不知道啊,所以,我们把自己能想到的 促销方式都各个封装起来,等到节日来临的时候,让老板决定用哪一种,然后我们就选                                取那一种。也就是说,所有的方式都准备好了,就等你来随机挑一种。

状态模式:

背景: 小菜老加班,给自己的工作时间段定义当时自己的身心状态

内容: 当一个对象的内在状态改变时允许改变其行为,这个对象看起来就像是改变了其类。

图文并茂:

同样,从图中,我们可以看到,这是一种选择 对应类,每一个子类实现一个与具体状态相关的行为
我们单从图上其实看不出什么,结合一下当时的情景:(上午值班-精力充沛;中午值班-饿困交加;下午值班-状态不错;晚上加班-疲累至极;)
现在再看图,不难看出,这是把各个阶段也就是所有的状态分别封装起来,然后呢,在具体的时间段有具体的行为具体的状态,也就是用具体的时间,去                                         对应当时唯一的状态,然后实现了Context的一个特定状态相关的行为。

二.对比

策略模式:

我们的策略模式是众里挑一,从许多种选择中选择出适合自己的,随便主人高兴

状态模式:

状态模式是有了具体的条件去众多选择中找与自己本身对应的那一个,是有条件要求的

三.小结:

整体观察策略模式与状态模式,其实他们都是一种选择模式,他们的区别(我自己认为)也就是那对条件的要求。 这个也已经在上面陈述,当然还有其他的不同的观点,但是这样对比着学习,总结,会使我们的记忆理解的更加深刻。

转载于:https://www.cnblogs.com/DoubleEggs/p/5747211.html

《大话》之 策略模式 Vs 状态模式相关推荐

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

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

  2. Java设计模式之策略模式与状态模式

    一.策略模式定义 定义:策略模式定义了一系列的算法,并将每一个算法封装起来,而且使他们之间可以相互替换,策略模式可以在不影响客户端的情况下发生变化. 好了,定义看看就完了,我知道你很烦看定义. 二.策 ...

  3. java - 策略模式、状态模式、卫语句,避免多重if-else(转)

    前言 当代码中出现多重if-else语句或者switch语句时.弊端之一:如果这样的代码出现在多处,那么一旦出现需求变更,就需要把所有地方的if-else或者switch代码进行更改,要是遗漏了某一处 ...

  4. Java 策略模式和状态模式

    本文是转载的,转载地址:大白话解释Strategy模式和State模式的区别 先上图: 本质上讲,策略模式和状态模式做得是同一件事:去耦合.怎么去耦合?就是把干什么(语境类)和怎么干(策略接口)分开, ...

  5. java输出不同颜色_Java设计模式-策略模式、状态模式

    推荐阅读: 一只Tom猫:都是"Redis惹的祸",害我差点挂在美团三面,真是"虚惊一场"! java喵:6大面试技能树:JAVA基础+JVM+算法+数据库+计 ...

  6. 对策略模式与状态模式的一点思考

    在以前的一片博文里 http://www.cnblogs.com/mightofcode/archive/2012/11/19/2771216.html,我发表了我对设计模式的一点看法 但是今天的一个 ...

  7. 策略模式 VS 状态模式

    在行为类设计模式中,状态模式和策略模式是亲兄弟,两者非常相似,两个类图非常相似,都是通过Context类封装一个具体的行为,都提供了一个封装的方法,是高扩展性的设计模式. 但根据两者的定义,我们发现两 ...

  8. 设计模式之模板方法模式、策略模式、命令模式、责任链模式、状态模式

    前言 本章节给您介绍23种设计模式的行为型模式中的模板方法模式.策略模式.命令模式.责任链模式.状态模式. 如有帮助记得3连 加 关注哦!欢迎品论去留言交流,谢谢阅读! 文章目录 前言 一.模板方法模 ...

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

    在行为类设计模式中,状态模式和策略模式是亲兄弟,两者非常相似,两个类图非常相似,都是通过Context类封装一个具体的行为,都提供了一个封装的方法,是高扩展性的设计模式. 但根据两者的定义,我们发现两 ...

最新文章

  1. JAVA之间的引用传递
  2. linux shell if 或和且的表示方法
  3. ckeditor_3.6.6.2+CKFinder2.0.2配置
  4. matlab cat函数_如何用Matlab编写贪吃蛇游戏?(持续更新)
  5. leetcode912. 排序数组 有范围的排序统统用桶排序
  6. JS面向对象——Object.defineProperty
  7. android item弹出popupwindow recycleview_Android实现RecycleView嵌套RecycleView中的item自动循环滚动功能...
  8. 我学会了如何入侵Facebook Messenger Soccer游戏
  9. Phpcms V9全站伪静态设置方法
  10. 调试工具_Apifox for Mac(接口调试管理工具)
  11. ggbiplot设置分组_prcomp和ggbiplot:无效的’rot’值
  12. python对比两个txt文件不同_Python对比俩个文件内容
  13. bio-linux软件包教程,biolinux包含软件
  14. 利用 POI 修改插入图表
  15. MBR分区的恢复 - 数据恢复
  16. 基于matlab数字基带传输系统,通信原理基于MATLAB Simulink 基带传输系统仿真实现...
  17. oracle停监听服务,ORACLE监听服务启动后又停止了的解决
  18. 面向程序员的精品开源字体:让代码更易读、更美观、更实用
  19. 处理使用top提示terminal is not big enough
  20. php阴影效果,PHP Imagick文字加阴影(外发光)

热门文章

  1. Java客户端操作zookeeper:获取及修改节点中的数据内容代码示例
  2. MySQL in语句内参数个数限制
  3. Spring配置内置的连接池DriverManagerDataSource
  4. linux 查看服务器网络连接,1.3.2 查看Linux服务器的网络连接(2)
  5. centos7下解决tomcat启动慢的问题
  6. 【通俗解释】余弦相似度
  7. Linux 下 VuePress 的安装使用
  8. c 调用c语言形参为double,C学生作业,’%f’需要’float *’类型的参数,但参数2的类型为’double *’...
  9. html引入avalon,avalon中文文档
  10. asp打开exe执行本地程序._基于QT应用程序打包成可执行程序exe