Я думаю, что идея заключается в том, что приложение имеет состояние, а пользовательский интерфейс отражает это состояние.
Поэтому, когда ваше приложение запускается, оно выглядит следующим образом
1) Начальное состояние (приложение запущено)
2) Загружает исходные данные («состояние загрузки»)
3) Готово к взаимодействию («состояние готовности»)
Теперь предположим, что пользователь запускаетсявзаимодействие, открыв форму.
4) Пользователь открывает форму и переходит к («редактирование состояния формы»)
Пользователь может отменить или сохранить, так что теперь состояния расходятся.При отмене
5) «Состояние формы редактирования» получает событие отмены, отменяет изменения и возвращается к «Готово»
При сохранении
5) Приложениепереходит в состояние «Сохранение», затем по завершении возвращается к «Готово» или «Ошибка»
Самое замечательное в этой концептуализации состоит в том, что она позволяет вашей «диаграмме состояний» обновлять элементы приложения в зависимости от состояния,Например, в состояниях «загрузка» или «сохранение» вы можете замаскировать пользовательский интерфейс или отключить кнопки.Ключевым моментом является то, что представлениям не нужно знать о состоянии, все, что он делает, это сидит и манипулирует.Это код состояния, который управляет тем, что представления делают, что в любой момент времени.
Обратите внимание, что также правильно для состояний в вашем пользовательском интерфейсе иметь состояние.Например, кнопка может иметь такие состояния, как «mouseenter», «mouseexit», «clickdown», «clickup», «неактивный» и т. Д. Можно считать, что пользовательский вид в вашем пользовательском интерфейсе имеет состояния, когда он отображает себя по-разному, в зависимости отна данных, которые он представляет.
Возможно, вы захотите взглянуть на
http://www.wisdom.weizmann.ac.il/~harel/papers/Statecharts.pdf