打字猴:1.700473496e+09
1700473496
1700473497 this.liftState.run();
1700473498
1700473499 }
1700473500
1700473501 public void stop(){
1700473502
1700473503 this.liftState.stop();
1700473504
1700473505 }
1700473506
1700473507 }
1700473508
1700473509 结合以上3个类,我们可以这样理解:Context是一个环境角色,它的作用是串联各个状态的过渡,在LiftSate抽象类中我们定义并把这个环境角色聚合进来,并传递到子类,也就是4个具体的实现类中自己根据环境来决定如何进行状态的过渡。关闭状态如代码清单26-10所示。
1700473510
1700473511 代码清单26-10 关闭状态
1700473512
1700473513 public class ClosingState extends LiftState{
1700473514
1700473515 //电梯门关闭,这是关闭状态要实现的动作
1700473516
1700473517 @Override
1700473518
1700473519 public void close(){
1700473520
1700473521 System.out.println(“电梯门关闭……”);
1700473522
1700473523 }
1700473524
1700473525 //电梯门关了再打开
1700473526
1700473527 @Override
1700473528
1700473529 public void open(){
1700473530
1700473531 super.context.setLiftState(Context.openningState); //置为敞门状态
1700473532
1700473533 super.context.getLiftState().open();
1700473534
1700473535 }
1700473536
1700473537 //电梯门关了就运行,这是再正常不过了
1700473538
1700473539 @Override
1700473540
1700473541 public void run(){
1700473542
1700473543 super.context.setLiftState(Context.runningState); //设置为运行状态
1700473544
1700473545 super.context.getLiftState().run();
[ 上一页 ]  [ :1.700473496e+09 ]  [ 下一页 ]