一、状态模式介绍
状态模式(State Pattern)属于行为型模式。
定义:类的行为基于状态的改变而改变。
比如订单状态,当状态为待发货,此时订单只有发货和退货的行为操作,订单状态为已发货,此时订单只有退货相关行为操作,订单状态为待付款,此时订单只有付款和取消的行为方式。
二、状态模板
场景:不同状态下的订单仅支持特定的操作,订单状态变更,其允许的操作跟着变更。
2.1、订单支持的操作,接口定义
2.2、根据不同状态定义订单操作
订单状态操作类实现接口
OrderOperateState
未支付状态下的订单操作类 UnpaidState
忽略更多状态具体实现….
2.3、订单状态枚举类
通过枚举类的方式实现策略模式,根据状态获取相关订单操作实例。
相关代码如下:
2.4、订单数据类
用以表示订单数据,以及订单操作的类 OrderOperate
,相关代码如下:OrderOperate
实现了 OrderOperateState
接口,实现了订单操作的相关方法,
不过操作的具体实现以持有的订单数据 OrderDomain
中的订单状态为主。
2.5、测试代码
通过查询数据库获取到的订单数据,构建处理类,处理类,根据订单数据中的订单状态,构建相关状态下的订单操作对象。
【公众号】花好夜猿