Структура данных для хранения большого количества информации о состоянии машины - PullRequest
1 голос
/ 08 октября 2011

У меня есть файл XML, и я хочу представить сложный конечный автомат, описанный в файле XML, в ac # data-Structure.Какую структуру данных я могу использовать?Определение одного состояния здесь .конечный автомат отображает синхронные и асинхронные переходы и действия в соответствии с различными асинхронными событиями.

1 Ответ

1 голос
/ 08 октября 2011

Вероятно, вам следует начать с рассмотрения того, как шаблон проектирования состояний может вам помочь.

У вас есть две вещи, которые вам нужны

Если ваши экземпляры состояний предварительно созданы.

  1. Внутреннее представление тех состояний, в которые вы можете десериализовать XML.Это будет серия классов, представляющих структуру XML.

  2. Поскольку каждое состояние, похоже, имеет идентификатор, и вы используете этот идентификатор для перехода в целевое состояние, вы можете сохранить состояниеобъекты (это из пункта 1) в словаре, где ключ - это идентификатор, а значение - это объект состояния.Когда вы выполняете переход, вы просто просматриваете целевое состояние в словаре и получаете оттуда экземпляр.

Если экземпляры состояния создаются по требованию

Словарь будет содержать метаданные для каждого состояния (это может быть XML или оптимизированный формат, который гидратируется из исходного XML), затем, когда требуется переход состояния, вы ищитесостояние в словаре и динамическое создание экземпляра состояния из метаданных, связанных с идентификатором состояния.

...