如何在Java中创建简单的状态机
我目前正在学习Java,并且想知道如何以OO方式控制状态。我实现了一个Pong应用程序。如果我想要多个状态,例如游戏性和菜单状态,并且这些状态中的每个状态都必须执行启动,停止和运行,我将如何实现此目标以及如何在这些状态之间进行切换。
我知道我可以简单地添加一个大的switch语句,但是实现这一点的最佳方法是什么?
我希望能够在游戏状态下切换到菜单状态,反之亦然。
import java.applet.*;import java.awt.*;
import java.awt.event.*;
public class Pong extends Applet implements Runnable, KeyListener{
public void start ()
{
setSize(screen);
setFocusable(true);
Thread th = new Thread (this);
th.start ();
}
public void stop()
{
}
//Etc..
}
回答:
您可以使用枚举来模拟基本的FSM(有限状态机):
public enum State { ONE {
@Override
public Set<State> possibleFollowUps() {
return EnumSet.of(TWO, THREE);
}
},
TWO {
@Override
public Set<State> possibleFollowUps() {
return EnumSet.of(THREE);
}
},
THREE // final state
;
public Set<State> possibleFollowUps() {
return EnumSet.noneOf(State.class);
}
}
如果事情变得更复杂,则生成该代码的代码将非常冗长,但令人高兴的是,您可以获得编译时安全性,线程安全性和高性能。
以上是 如何在Java中创建简单的状态机 的全部内容, 来源链接: utcz.com/qa/398739.html