美文网首页
行为型设计模式.状态模式

行为型设计模式.状态模式

作者: 双鱼子曰1987 | 来源:发表于2017-11-03 14:04 被阅读0次

    封装状态的转变过程

    概念理解

    • 定义:允许对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的类。

      state.png

    Context: 环境类,有时候可以充当状态管理器(State Manager)的角色
    State: 抽象状态类
    ConcreteState: 具体状态类

    • 种类
      • 简单状态模式:简单状态模式是指状态都相互独立,状态之间无须进行转换
      • 可切换状态的状态模式:在实现状态切换时,在具体状态类内部需要调用环境类Context的setState()方法进行状态的转换操作,在具体状态类中可以调用到环境类的方法,因此状态类与环境类之间通常还存在关联关系或者依赖关系

    实用和优缺点

    • 解决的问题
      在很多情况下,一个对象的行为取决于一个或多个动态变化的属性,这样的属性叫做状态,这样的对象叫做有状态的(stateful)对象,这样的对象状态是从事先定义好的一系列值中取出的。当一个这样的对象与外部事件产生互动时,其内部状态就会改变,从而使得系统的行为也随之发生变化。

    • 应用实例
      OA系统中的单据状态,例如请假单状态

    • 优点
      封装了转换规则
      枚举可能的状态,在枚举状态之前需要确定状态种类
      允许状态转换逻辑与状态对象合成一体,而不是某一个巨大的条件语句块

    • 缺点
      状态模式对"开闭原则"的支持并不太好
      增加系统的复杂度,不易理解

    相关文章

      网友评论

          本文标题:行为型设计模式.状态模式

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