Очистка / сжатие нескольких состояний, представленных логическими переменными - PullRequest
1 голос
/ 25 сентября 2011

В реализации у меня есть много состояний, представленных логическими переменными, таким образом, что когда состояние истинно, переменная для этого состояния является истинной, а многие или все остальные ложными. Это не очень хороший способ, и, поскольку я только планировал свое решение до написания кода, оно оказалось таким. Теперь я должен очистить его. Какое самое лучшее решение для очистки?

Я думал о enum, дать имя каждому состоянию, и таким образом одна переменная может содержать имя состояния вместо нескольких переменных. Но проблема в том, что есть другая информация, связанная с некоторыми состояниями, например, один или два экземпляра переменных Point или int, которые предназначены только для этого состояния. Как их разместить, если используется enum?

Какое самое элегантное и подходящее решение в подобных ситуациях?

1 Ответ

0 голосов
/ 25 сентября 2011

Взгляните на шаблон проектирования состояний для реализации конечных автоматов, вместо отображения состояний в перечисление, каждое состояние является классом, события являются функциями-членами классов состояний.

...