2012-03-06 2 views
0

Я использую Composite pattern для представления иерархической структуры данных:Расширение композитного шаблона?

  • CompositeNodeA
    • Leaf1
    • Leaf2
    • ...
  • CompositeNodeB ....

Каждый лист представляет собой конкретную задачу. Сначала пользователю предоставляется список задач по умолчанию для конкретного сценария, тогда пользователь проверяет/отменяет определенные задачи (например, с помощью элемента управления TreeView), и после принятия выбора данные всегда сохраняются в XML-файле. Эти данные позже используются либо (1) движком, который завершает проверенные задачи, либо (2) пользовательским интерфейсом, чтобы отобразить список выбранных задач.

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

Зная, что у меня может быть большое количество различных типов сценариев (каждый сценарий имеет свой собственный XML-файл), каждый из которых имеет совершенно другой набор/расположение/выбор по умолчанию задач и различные «внутренние» задачи на основе определенных выборов некоторых задач, как я могу реализовать интерфейс между чтением/записью файла XML и UI + Engine? Тот, который скрывает «внутренние» задачи от пользовательского интерфейса, но отслеживает их, записывая их в XML-файл и настраивая различные настройки на основе типа сценария?

ответ

1

Из чего я понимаю, у вас в основном есть список задач, и у них могут быть подзадачи. Так вот мои мысли:

  • Все задачи вытекают из общей задачи класс/интерфейс (никакой разницы между внутренними и внешними задачами)
  • Каждая задача имеет список задач (это будет его внутренняя/суб задачи)
  • Этот список также должен присваивать атрибуты вспомогательным/внутренним задачам
    (например, является ли это видимым или нет). Обратите внимание, что задача не скрыта или сама по себе. Таким образом, такой атрибут не должен находиться в задаче уровня класса, но на уровне, где одна задача ассоциируется с другой задачей
    .
  • Также, как UI/Engine хочет обработать задачу, должен отличаться от того, что на самом деле задает . Таким образом, настройки UI/Engine не должны быть , упомянутыми на уровне задачи.

Я знаю, что это немного на абстрактной стороне, но дайте мне знать, если это ответит на ваш вопрос или возникнут какие-либо недоумения.

Смежные вопросы