状态模式

目录

 

0. 背景描述

1.状态模式介绍

1.1 状态模式定义

1.2 状态模式UML结构图

2. 状态模式的Java实现

2.1 用例UML结构图

2.2 用例代码

3. 状态模式的特点 

4. 状态模式的使用

5. 状态模式与策略模式

6. 结语


0. 背景描述

每年的3月21号是24节气中的春分,记得有一首古诗是这样描述春分这个节气的。日月阳阴两均天,玄鸟不辞桃花寒。 从来今日竖鸡子,川上良人放纸鸢。大致意思就是说春天是万物复苏的季节,桃花开始盛开,燕子从南方归来,人们纷纷走出家门踏青,放风筝,感受暖暖的春意,享受季节轮转的玄妙,一年有四季,在每个季节中物种呈现的状态是不一样的,面对每一个不同的季节,都会有不同的展现(行为),比如对于一颗树来说,春季发芽长叶,夏天枝繁叶茂,秋天落叶纷纷,冬天雪压枝头。

在软件系统设计中,有时候我们要根据对象不同的状态做出不同的处理,通常我们的处理方式是在程序中使用if..else或者switch来判断对象的状态然后做出不同的处理,系统设计简单的时候这样做没问题,但是如果需要增加一种状态处理就必须修改原有的逻辑,扩展性很差,不符合设计模式的原则。

还是回到第一段的例子,我们看一棵树,四季可以说是树的四种状态,状态之间是可以转换的,每个状态呈现的行为也不一样,那么,如何让一个对象在不同的状态下展现不同的行为并且使程序有良好的易读性和扩展性,这就是我们今天要讲的状态模式。

1.状态模式介绍

1.1 状态模式定义

状态模式状态模式允许一个对象在其内部改变状态时改变其行为,这个对象看上去就像是改变了他的类一样。

1.2 状态模式UML结构图

Context:环境类,关联了抽象状态接口。

State:抽象状态接口,定义了具体状态的抽象行为。

ConcreteState*:具体状态实现类,定义了一个具体状态的行为。

2. 状态模式的Java实现

本文以一棵树的四季变化为例,用Java代码简单的实现一个状态模式(Java版本为Java10)。

2.1 用例UML结构图

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值