1700473043
图26-2 电梯状态和动作对应表(〇表示不允许,☆表示允许动作)
1700473044
1700473045
看到这张表后,我们才发觉,哦,我们的程序做得很不严谨,好,我们来修改一下,如图26-3所示。
1700473046
1700473047
1700473048
1700473049
1700473050
图26-3 增加了状态的类图
1700473051
1700473052
在接口中定义了4个常量,分别表示电梯的4个状态:敞门状态、闭门状态、运行状态、停止状态,然后在实现类中电梯的每一次动作发生都要对状态进行判断,判断是否可以执行,也就是动作的执行是否符合业务逻辑,实现类中有4个私有方法是仅仅实现电梯的动作,没有任何前置条件,因此这4个方法是不能为外部类调用的,设置为私有方法。我们先看接口的改变,如代码清单26-4所示。
1700473053
1700473054
代码清单26-4 电梯接口
1700473055
1700473056
public interface ILift{
1700473057
1700473058
//电梯的4个状态
1700473059
1700473060
public final static int OPENING_STATE=1;//敞门状态
1700473061
1700473062
public final static int CLOSING_STATE=2;//闭门状态
1700473063
1700473064
public final static int RUNNING_STATE=3;//运行状态
1700473065
1700473066
public final static int STOPPING_STATE=4;//停止状态
1700473067
1700473068
//设置电梯的状态
1700473069
1700473070
public void setState(int state);
1700473071
1700473072
//首先电梯门开启动作
1700473073
1700473074
public void open();
1700473075
1700473076
//电梯门可以开启,那当然也就有关闭了
1700473077
1700473078
public void close();
1700473079
1700473080
//电梯要能上能下,运行起来
1700473081
1700473082
public void run();
1700473083
1700473084
//电梯还要能停下来
1700473085
1700473086
public void stop();
1700473087
1700473088
}
1700473089
1700473090
这里增加了4个静态常量,并增加了一个方法setState,设置电梯的状态。我们再来看实现类是如何实现的,如代码清单26-5所示。
1700473091
1700473092
代码清单26-5 电梯实现类
[
上一页 ]
[ :1.700473043e+09 ]
[
下一页 ]