打字猴:1.700473043e+09
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 ]  [ 下一页 ]