История изменений
Исправление AndreyKl, (текущая версия) :
Представлять каждое состояние объектом отдельного типа.
что то я совсем от си далёк похоже. если брать с++, то для меня смысл сказанного ясен, кажется: описываем класс на каждое состояние (можно пустой, лишь бы разный), описываем переходы в виде методов вроде OpenDoor ClosedDoor.openDoor()
. Кажется статическая проверка должна работать. Правда это всё нечитаемо особо, потому что будет разбросано по классам. В том смысле что перед глазами удобно видеть некую «таблицу переходов», а тут только пара переходов будет. Но лучше чем ничего. К тому же можно набросать набор фукнций вида
OpenDoor openDoor(ClosedDoor door)
ClosedDoor closeDoor(OpenDoor door)
Исходная версия AndreyKl, :
Представлять каждое состояние объектом отдельного типа.
что то я совсем от си далёк похоже. если брать с++, то для меня смысл сказанного ясен, кажется: описываем класс на каждое состояние (можно пустой, лишь бы разный), описываем переходы в виде методов вроде OpenDoor ClosedDoor.openDoor()
. Кажется статическая проверка должна работать. Правда это всё нечитаемо особо, потому что будет разбросано по классам. В том смысле что перед глазами удобно видеть некую «таблицу переходов», а тут только пара переходов будет. Но лучше чем ничего. К тому же набор фукнций вида
OpenDoor openDoor(ClosedDoor door)
ClosedDoor closeDoor(OpenDoor door)