Попытка недетерминированного конечного автомата (C ++), является ли статическая std :: map хорошей идеей? - PullRequest
3 голосов
/ 09 декабря 2011

Мне нужно реализовать недетерминированный FSM, поэтому мне пришла в голову идея определения класса FSM, который содержит состояния и переходы (которые могут зависеть или не зависеть от состояний других автоматов, но должны зависеть от событий / input) для каждого объекта и добавление статического std :: map в класс, который будет регистрироваться каждым FSM при создании. Таким образом, на событиях / входах каждый FSM может при необходимости просматривать состояние других FSM и вести себя соответствующим образом, не объединяя все FSM в один огромный детерминированный FSM.

Это работает для одного NFSM, и это все, что мне нужно сейчас, но может быть расширено, если потребуется больше? Что-то принципиально не так с этим дизайном?

1 Ответ

3 голосов
/ 09 декабря 2011

Я очень не уверен насчет статической части - карта кажется хорошей идеей. Представляется более разумным создать объект пространства имен, содержащий карту для всех связанных FSM (то есть тех, которые взаимодействуют друг с другом), поскольку разумно предположить, что вам могут потребоваться разные наборы машин, которые могут работать независимо (с безопасностью потоков) во многих контекстах.

Статическая карта является примером синглтона, который, как обычно понимают, имеет неприятный запах кода.

...