欢迎光临散文网 会员登陆 & 注册

设计模式:状态模式

2021-08-08 10:20 作者:做架构师不做框架师  | 我要投稿


什么是状态模式

状态模式(State Pattern),它允许一个对象其内部状态改变时改变它的行为。这种模式接近有限状态机的概念。状态模式可以解释为策略模式,它能够通过调用模式接口中定义的方法来切换策略。

状态模式用于封装同一对象的不同行为,基于其内部状态。这可以是对象在运行时更改其行为的更简洁的方式,而无需求助于条件语句,从而提高可维护性。

一句话归纳

状态驱动行为,行为决定状态

代码示例

人的一生会有三种状态,孩童时期、成年时期还有老年时期,我们在每一个时期都会做一些不同的事。

当我们是孩子的时候,家长都会告诉我们“好好学习,天天向上”,所以学习是我们的最重要的事;

当我们是一个成年人的时候,身上会渐渐地产生一个叫做责任的东西,所以男人们就要“赚钱养家”了,当一个家的脊梁;

当我们是老年人的时候,过上了退休的休闲生活,但我还是劝谏大家,不要去跳“广场舞”,依然坚持读书,因为“史使人明智,读诗使人灵透,数学使精细,物理使人深沉,伦理使人庄重,逻辑修辞使人善辩”,希望大家都是一个爱读书的人。

适用性

以下场景我建议你考虑使用

  • 代码中含有大量条件、分支判断语句(诸如if...else、switch)的时候。

  • 行为随着状态改变的时候。

  • 现在很流行的状态机就是状态模式的强化版。

  • 比如工作流流转、商品订单等等。

局限性

以下场景我希望你慎重使用

  • 该模式一定会增加系统中对象和类的数量,会出现类膨胀想想看,所以我们叫它有限状态机,建议不超过5个。

  • 结构与实现都较为复杂,如果使用不当会导致程序结构和代码的混乱。

写在最后

好兄弟可以点赞并关注我的公众号“javaAnswer”,全部都是干货。



设计模式:状态模式的评论 (共 条)

分享到微博请遵守国家法律