Я хочу реализовать FSM, как показано ниже
- Первый уровень Самое основное состояние - BASE_STATE. Все
состояния происходят из BASE_STATE.
- Второй уровень , WAITING_STATE,
RUNNING_STATE, END_STATE, ... и так далее
(Получено из BASE_STATE. Новых нет
функциональность)
- Третий уровень , Есть 2 группы
состояния (ACTIVE и PASSIVE),
Индивидуальное сопоставление для всех состояний второго уровня
как
ACTIVE_WAITING_STATE, ACTIVE_RUNNING_STATE, ACTIVE_END_STATE и т. Д.
PASSIVE_WAITING_STATE, PASSIVE_RUNNING_STATE, PASSIVE_END_STATE и т. Д.
большинство функций являются общими для состояний ACTIVE и PASSIVE, только некоторые небольшие функции переопределяются. Там нет проблем, пока здесь. Проблема в том, что все группы третьего уровня имеют общие функции. Я имею в виду, например, я должен реализовать 2 разные функции increment (), одна из которых ACTIVE_xxx_STATEs, другая - PASSIVE_xxx_STATE. Как сделать это без переписывания для всех состояний (например, ACTIVE_WAITING_STATE, ACTIVE_RUNNING_STATE, ACTIVE_END_STATE, а также PASSIVE состояний)
Чтобы прояснить мои вопросы, мой уродливый сын. Проблема в том, что функции приращения одинаковы и переписаны для всех ActivexxxState (а также PassiveXXXState).
public class BaseState {
// Lots of functions
}
public class WaitingState extends BaseState{
// Lots of functions
}
public class RunningState extends BaseState{
// Lots of functions
}
public class EndState extends BaseState{
// Lots of functions
}
public Class ActiveWaitingState extends WaitingState {
// Few unique functions
private void increment() {
System.out.println("increment active");
}
}
public Class ActiveRunningState extends RunningState {
// Few unique functions
private void increment() {
System.out.println("increment active");
}
}
public Class ActiveEndState extends EndState {
// Few unique functions
private void increment() {
System.out.println("increment active");
}
}
public Class PassiveWaitingState extends WaitingState {
// Few unique functions
private void increment() {
System.out.println("increment passive");
}
}
public Class PassiveRunningState extends RunningState {
private void increment() {
System.out.println("increment passive");
}
}
public Class PassiveEndState extends EndState {
private void increment() {
System.out.println("increment passive");
}
}