状态模式--的一个试用场景

来源:互联网 发布:4首最流行的网络歌曲 编辑:程序博客网 时间:2024/06/07 06:01

原文连接

电梯的运行简单有这么几个状态:运行、停止、关闭、打开,电梯想要正常的运行,就必须得遵循一定的规则,例如运行的时候不能开门,开门状态不能运行。按照平常的逻辑,分别创建open,close,run,stop四个方法,方法里通过switch当前的状态,执行不同的动作。这种处理有几个问题:
1、扩展性太差
如果电梯还有两个状态:通电状态和断电状态。那就要在open,close,run,stop四个方法里都要增加判断条件,这与开闭原则相违背。
2、非常规状态无法实现
电梯在门开着的状态下就不能上下运行了吗?电梯有没有发生过只有运行没有停止状态呢?电梯故障嘛。还有电梯在检修的时候,可以在stop状态下不开门,这也是正常的业务需求啊。如果加上这些需求,又有多少程序要改动?

既然平常的办法会带来这么多问题,当然要找好的模式来解决——状态模式
实现类图如下:
这里写图片描述
具体代码请移步原文

0 0
原创粉丝点击