您的位置:首页 > 其它

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

2015-06-02 18:41 295 查看
原文连接

电梯的运行简单有这么几个状态:运行、停止、关闭、打开,电梯想要正常的运行,就必须得遵循一定的规则,例如运行的时候不能开门,开门状态不能运行。按照平常的逻辑,分别创建open,close,run,stop四个方法,方法里通过switch当前的状态,执行不同的动作。这种处理有几个问题:

1、扩展性太差

如果电梯还有两个状态:通电状态和断电状态。那就要在open,close,run,stop四个方法里都要增加判断条件,这与开闭原则相违背。

2、非常规状态无法实现

电梯在门开着的状态下就不能上下运行了吗?电梯有没有发生过只有运行没有停止状态呢?电梯故障嘛。还有电梯在检修的时候,可以在stop状态下不开门,这也是正常的业务需求啊。如果加上这些需求,又有多少程序要改动?

既然平常的办法会带来这么多问题,当然要找好的模式来解决——状态模式

实现类图如下:




具体代码请移步原文
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: