Как модель statemachine, когда состояние зависит от функции? - PullRequest
1 голос
/ 06 мая 2010

У меня есть Контрактный класс. Договор действует с 1 января 2010 г. по 31 декабря 2010 г.

Может быть в активном или пассивном состоянии, в зависимости от того, в какую дату я запрашиваю у экземпляра его состояние. ех. если я спрашиваю 4 июля 2010 года, он находится в состоянии Active, но если я спрашиваю 1 января 2011 года, он находится в состоянии Passive.

Диаграмма состояния машины:

Из начального состояния, в какое состояние он должен перейти в следующий? Я думаю о псевдосостоянии «по умолчанию» с функцией входа, решающей, в какое состояние идти дальше, и затем подсостоянием машины с активными и пассивными, а затем состоянием завершения при удалении.

Но это кажется сложным для такой тривиальной задачи.

Как бы вы это сделали?

1 Ответ

0 голосов
/ 06 мая 2010

Хм, вы хотите либо сделать то, что вы описываете, что позволит Контракту быть в недействительном состоянии (начало / конец), когда кто-то пытается использовать контакт без события предшествующей даты, или вы можете попытаться добавить вызов к этому функция в конструкторе, поэтому ваш контракт находится в надлежащем состоянии сразу. Могут быть и другие решения, но вам следует подумать о том, какие другие события (сообщения / вызовы методов) могут произойти в контракте, кроме даты. Некоторые могут повлиять на Stae также. КСТАТИ. Ваше решение не так сложно, когда вы вместо встраивания конечного автомата только соединяют начало и конец с активным и пассивным состояниями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...