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

封装状态的转变过程

概念理解

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

    行为型设计模式.状态模式_第1张图片
    state.png

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

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

实用和优缺点

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

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

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

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

你可能感兴趣的:(行为型设计模式.状态模式)