Java クラスに有限状態マシンを実装しています。状態とイベントが独自のオブジェクトである別の例を見つけることができませんでした (おそらくそれには理由がありますか?)。また、特に状態を FSM に割り当てる必要があるため、自分の解決策に確信が持てません。 (実際のマネージャー) を指定し、FSM を状態に割り当てます (状態の変更を通知するため)。状態を割り当てる状態マネージャーのコードを次に示します。要求があれば、それを吐き出します。
public class FSM {
public void setCurrentState(FSMState newCurrentState) {
this.currentState = newCurrentState;
}
private FSMState currentState;
public FSMState getCurrentState() {
if (this.currentState == null)
System.out.println("No current state");
return this.currentState;
}
}
これはマップを使用してイベントを出力状態にマップし、遷移の場合は FSM クラスに通知します。
public class FSMState implements EventListener {
private FSM managingFSM;
private Map<Event,FSMState> transitions;
public FSMState(FSM managingFSM) {
this.transitions = new HashMap<Event, FSMState>();
this.managingFSM = managingFSM;
}
public void addEventTransition(Event event, FSMState outputState){
transitions.put(event, outputState);
event.registerListener(this);
}
@Override
public void eventOccured(Event e) {
FSMState newState = transitions.get(e);
this.managingFSM.setCurrentState(newState);
}
}
州がマネージャーに通知する必要がないように、一種の同様のソリューションを使用する方法はありますか?