设计模式之状态模式

应用场景分析

在一些平台中,比如淘宝订单中,经常会有不同的状态,已拍下未付款,拍下已付款,未发货,已发货等等,那么,代码中如何实现?
一般思路
一般思路来说,就是设定一些值来表示状态,然后通过if、else来判断,然后依次比对。但是,如果代码已经写好了,现在业务扩展,需要添加新状态,怎么办?是不是就要改变之前写好的代码了?在if、else中添加新逻辑,这样的话,就违反开闭原则了。
状态模式
用状态模式,就是利用接口和抽象类的抽象功能,有一个状态的统一接口,然后,所有的具体状态实现接口,并具体实现不同方法。这样,当需要添加状态时,就只需要新实现一个子类就行了,不需要对之前的代码进行修改,符合开闭原则。

状态模式

在状态模式(State Pattern)中,类的行为是基于它的状态改变的。这种类型的设计模式属于行为型模式。

在状态模式中,我们创建表示各种状态的对象和一个行为随着状态对象改变而改变的 context 对象。

关键代码:通常命令模式的接口中只有一个方法。而状态模式的接口中有一个或者多个方法。而且,状态模式的实现类的方法,一般返回值,或者是改变实例变量的值。也就是说,状态模式一般和对象的状态有关。实现类的方法有不同的功能,覆盖接口中的方法。状态模式和命令模式一样,也可以用于消除 if…else 等条件选择语句。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值