设计模式之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中需要处理所有状态变化.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值