设计模式之State模式

设计模式之State模式

设计模式State主要用户状态变化处理,如果不用State模式,需要使用多次if语句判断状态值,然后执行不同的操作.在State模式下,每个模式为一个类,在类中给出当前模式下的对应操作, 让相关的操作统一在一个类中独立实现.

State模式的角色组成:

Context: 提供底层接口,上下文环境(state变量), 上层抽象的业务逻辑等
State: State接口,定义通用的操作接口,为上层提供业务逻辑调用的操作接口.
ConcreteState: 具体的State类,定义当前State下的各种操作;在实际操作中,可以把ConcreteStateX实现为单例模式

这里写图片描述

状态变换的实现方式

  • 一种是定义Context为接口,在实现类中定义changeState(),在ConcreteStateX中判断state变换条件,调用context.changeState()变换状态.
    优点: 状态变换集中在ConcreteStateX中,从statX -> statY,从statX中可以查找到,非常清晰.
    缺点: 增加了状态间的耦合,StatX中会调用StatY的信息,所以statX中必须需要知道statY相关信息.

  • 一种是定义state变量在Context中,在Context中集中判断state变换条件和状态变换;
    优点: 这种做法的优点是每个ConcreteStat类是相互独立的,不用处理状态变化.
    缺点: 在Context中需要处理所有状态变化.

猜你喜欢

转载自blog.csdn.net/robin912/article/details/81014497
今日推荐