Мы используем "структуру" конечного автомата (основанную на шаблоне состояний), которая не раскрывает свое текущее состояние, что иногда означает, что я должен действовать окольными путями.
Когда я сомневался в этом дизайнерском решении, одним из оправданий было то, что «если вам нужно знать текущее состояние, вы используете его неправильно».
Это правильно? Я не очень разбираюсь в государственных машинах.
(Я ' Я спрашиваю здесь, потому что знаю, что у меня есть врожденное предубеждение против паттерна состояний, которое я считаю слишком многословным.)
ПРИМЕР
Представьте себе систему, которая в одном из состояний считывает данные с двух датчиков. Один датчик выдает числовое значение, другой - логическое, которое сообщает вам, является ли первый «надежным» или нет. Система выводит значение, которое является либо текущим «хорошим» значением, либо интерполяцией (или другим причудливым вычислением) на основе последних n хороших значений.
Моя идея состояла бы в том, чтобы иметь два подсостояния - один «хорошо», другой - «нет». И когда приходит новое значение, я хотел бы спросить конечный автомат, в каком оно состоянии, чтобы я знал, как обрабатывать интерполяцию.
(Думаю, я ответил на свой вопрос: решением было бы иметь событие NewDataValue (val)
в конечном автомате, которое будет пересылать только значение из «хорошего» состояния?)