设计模式:状态模式
什么是状态模式
状态模式(State Pattern),它允许一个对象其内部状态改变时改变它的行为。这种模式接近有限状态机的概念。状态模式可以解释为策略模式,它能够通过调用模式接口中定义的方法来切换策略。
状态模式用于封装同一对象的不同行为,基于其内部状态。这可以是对象在运行时更改其行为的更简洁的方式,而无需求助于条件语句,从而提高可维护性。
一句话归纳
状态驱动行为,行为决定状态
代码示例
人的一生会有三种状态,孩童时期、成年时期还有老年时期,我们在每一个时期都会做一些不同的事。
当我们是孩子的时候,家长都会告诉我们“好好学习,天天向上”,所以学习是我们的最重要的事;
当我们是一个成年人的时候,身上会渐渐地产生一个叫做责任的东西,所以男人们就要“赚钱养家”了,当一个家的脊梁;
当我们是老年人的时候,过上了退休的休闲生活,但我还是劝谏大家,不要去跳“广场舞”,依然坚持读书,因为“史使人明智,读诗使人灵透,数学使精细,物理使人深沉,伦理使人庄重,逻辑修辞使人善辩”,希望大家都是一个爱读书的人。

适用性
以下场景我建议你考虑使用
代码中含有大量条件、分支判断语句(诸如if...else、switch)的时候。
行为随着状态改变的时候。
现在很流行的状态机就是状态模式的强化版。
比如工作流流转、商品订单等等。
局限性
以下场景我希望你慎重使用
该模式一定会增加系统中对象和类的数量,会出现类膨胀想想看,所以我们叫它有限状态机,建议不超过5个。
结构与实现都较为复杂,如果使用不当会导致程序结构和代码的混乱。
写在最后
好兄弟可以点赞并关注我的公众号“javaAnswer”,全部都是干货。
