Поскольку в каждом штате могут храниться переменные экземпляра?
Взгляните на пример из Википедии, на который вы ссылаетесь:
class StateB implements State {
private int count=0;
public void writeName(StateContext stateContext, String name) {
System.out.println(name.toUpperCase());
if(++count>1) {
stateContext.setState(new StateA());
}
}
}
Можете ли вы увидеть, как оно хранит количество раз, которое онобыл введен?
Теперь в FSM вы, вероятно, хотите, чтобы каждое состояние было идемпотентным (последующие вызовы дают ту же обратную связь), но шаблон состояний более общий.Одно из целевых применений, как описано на странице википедии:
Чистый способ частичного изменения своего типа во время выполнения
Поскольку большинство объектов, вероятно, используют свои локальные переменныепри выполнении действий вы бы хотели, чтобы версия «измененного типа» также использовала локальные переменные.