美文网首页
策略模式和状态模式

策略模式和状态模式

作者: rxdxxxx | 来源:发表于2016-05-07 13:42 被阅读729次

状态模式

  • 状态模式

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

状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况. 把状态的判断逻辑转移到表示不同状态的一系列类当中, 可以把复杂的判断逻辑简化

如果这个状态判断很简单,那就没必要用状态模式

状态模式使用一个对象可以在不同的状态下表现出不同的行为。

  • 状态的使用:
  • 比如表示一个人在一天不同时刻的工作内容.

策略模式

  • 策略模式

它定义了算法家族, 分别封装起来, 让它们之间可以相互替换, 此模式让算法的变化, 不会影响到使用算法的客户.

不同的策略都是完成相同的工作, 只是实现不同, 它可以以相同的方式调用所有的算法, 减少了各种算法类与使用算法类之间的耦合.

可以和工厂方法配合使用.

策略模式是对一组相关的算法进行封装,给调用方提供了运行时的灵活性

  • 策略的使用
    • 策略:商场的促销时不同的打折算法.可以看到这里的打折算法是可以相互替换的.

对比

  • 状态模式可以帮助对象来管理它的状态
  • 策略模式使得客户端可以选择不同的行为。
  • 一个不太容易看到的区别是,谁去驱动行为的改变。
  • 在策略模式中,是客户端驱动的,它给上下文信息提供了不同的策略
  • 在状态模式中,状态的迁移是由Context或者State对象自己来管理的
  • 从理论上说,策略模式和状态模式还有一个不同,前者定义的是一个对象“如何”去做一件事情,比如说如何对数据进行排序,而另一方面,状态模式定义的是“什么”以及“何时“,比如说一个对象能做什么,某个时间点它处于哪个状态。

相关文章

  • 策略模式和状态模式

    不怕跌倒,所以飞翔 本文中知识点概述: 策略模式和状态模式的基本概念 策略模式和状态模式的区别 策略模式和状态模式...

  • 设计模式-状态模式

    介绍 状态模式和策略模式是一对双胞胎,他们都属于行为设计模式。状态模式和策略模式都是为具有多种可能情形设计的模式,...

  • 策略模式和状态模式

    状态模式 状态模式 当一个对象的内在状态改变时允许改变其行为, 这个对象看起来像是改变了其类. 状态模式主要解决的...

  • 策略模式和状态模式

    一,状态模式和策略模式得区别 1,状态模式和策略在代码写法上非常类似,而且UML图也是非常类似,甚至通用,但是在需...

  • 策略模式

    策略模式是行为型模式的一种,同时属于行为模式的还有:命令模式,观察者模式,状态模式和之前写的中介者模式。 策略模式...

  • 《Android源码设计模式解析和实战》状态模式

    和策略模式类似且不同;策略模式是切换不同的策略执行不同策略的统一方法;状态模式是切换不同的状态执行执行不同的方法;...

  • Android设计模式(七)-状态模式

    状态模式看起来和策略模式很像,但是是两个不一样的设计模式。状态模式是一个类根据内部的状态动态的选择行为。策略模式一...

  • 设计模式整理(7) 状态模式

    学习《Android 源码设计模式解析与实践》系列笔记 介绍 状态模式和策略模式都是行为型模式。状态模式中的行为是...

  • 设计模式系列——状态模式

    前言 状态模式和策略模式结构几乎完全一样,但是他们的本质却完全不同。状态模式中的行为是平行的,不可替换的;策略模式...

  • 设计模式--状态模式

    目录 本文的结构如下: 引言 什么是状态模式 模式的结构 典型代码 代码示例 状态模式和策略模式的区别 优点和缺点...

网友评论

      本文标题:策略模式和状态模式

      本文链接:https://www.haomeiwen.com/subject/euzjrttx.html