状态模式--的一个试用场景
来源:互联网 发布:4首最流行的网络歌曲 编辑:程序博客网 时间:2024/06/07 06:01
原文连接
电梯的运行简单有这么几个状态:运行、停止、关闭、打开,电梯想要正常的运行,就必须得遵循一定的规则,例如运行的时候不能开门,开门状态不能运行。按照平常的逻辑,分别创建open,close,run,stop四个方法,方法里通过switch当前的状态,执行不同的动作。这种处理有几个问题:
1、扩展性太差
如果电梯还有两个状态:通电状态和断电状态。那就要在open,close,run,stop四个方法里都要增加判断条件,这与开闭原则相违背。
2、非常规状态无法实现
电梯在门开着的状态下就不能上下运行了吗?电梯有没有发生过只有运行没有停止状态呢?电梯故障嘛。还有电梯在检修的时候,可以在stop状态下不开门,这也是正常的业务需求啊。如果加上这些需求,又有多少程序要改动?
既然平常的办法会带来这么多问题,当然要找好的模式来解决——状态模式
实现类图如下:
具体代码请移步原文
0 0
- 状态模式--的一个试用场景
- 4.php设计模式:状态模式的使用场景
- 设计模式的应用场景(15)--状态模式
- NoSQL数据库试用场景
- 练习一个状态模式
- Unity 编辑模式下自定义快捷控制场景物体的显隐状态
- (学习笔记)设计模式之状态模式(游戏场景切换)
- 试用windows7的xp兼容模式
- 开始试用docker的swarm模式
- 开始试用docker的swarm模式
- 试用CppUnit--一个简单的例子
- 试用CppUnit--一个简单的例子
- 观察者模式,让一个对象观察另一个对象的状态
- 一个地道的状态模式列子(java)
- 场景编辑器中间状态的保存
- 理解设计模式的场景
- 常用的设计模式场景
- 每天一个设计模式: 状态模式(State)
- leetcode Valid Parentheses
- [jquery] 简单判断滚动条位置
- CMD:[2]怎样获取文件夹的目录层次结构
- hdu 2870 Largest Submatrix(dp)
- left join 的SQL 转hql
- 状态模式--的一个试用场景
- 一个SaveOrUpdate的不执行问题
- HDU 大数模板之Children’s Queue
- c++第一次作业
- Spring MVC之@RequestMapping 详解
- Android 自定义view的实现
- ubuntu 安装oracle-jdk7
- javascript中的call()和bind()
- [js实例] js控制audio背景音乐