package 状态模式;
abstract class State {
public abstract void handle(Plane plane);
}
class FlyState extends State {
@Override
public void handle(Plane plane) {
System.out.println("停止飞行");
plane.curState = new StopState();
System.out.println("开始静止");
}
}
class RunState extends State {
@Override
public void handle(Plane plane) {
System.out.println("停止奔跑");
plane.curState = new FlyState();
System.out.println("开始起飞");
}
}
class StopState extends State {
@Override
public void handle(Plane plane) {
System.out.println("停止静止");
plane.curState = new RunState();
System.out.println("开始奔跑");
}
}
class Plane {
public State curState = null;
public Plane() {
super();
this.curState = new StopState();
}
public void request() {
this.curState.handle(this);
}
}
public class Main {
public static void main(String[] args) {
Plane plane = new Plane();
plane.request();
plane.request();
plane.request();
plane.request();
plane.request();
plane.request();
}
}
停止静止
开始奔跑
停止奔跑
开始起飞
停止飞行
开始静止
停止静止
开始奔跑
停止奔跑
开始起飞
停止飞行
开始静止