Я использую Composite pattern для представления иерархической структуры данных:Расширение композитного шаблона?
- CompositeNodeA
- Leaf1
- Leaf2
- ...
- CompositeNodeB ....
Каждый лист представляет собой конкретную задачу. Сначала пользователю предоставляется список задач по умолчанию для конкретного сценария, тогда пользователь проверяет/отменяет определенные задачи (например, с помощью элемента управления TreeView), и после принятия выбора данные всегда сохраняются в XML-файле. Эти данные позже используются либо (1) движком, который завершает проверенные задачи, либо (2) пользовательским интерфейсом, чтобы отобразить список выбранных задач.
В некоторых сценариях существуют определенные (сложные) задачи, для которых требуются дополнительные «внутренние» задачи в качестве предпосылок для генерации сложной задачи. Однако я не хочу отображать эти «внутренние» задачи для пользователя, но они все еще используются движком и записываются в файл XML.
Зная, что у меня может быть большое количество различных типов сценариев (каждый сценарий имеет свой собственный XML-файл), каждый из которых имеет совершенно другой набор/расположение/выбор по умолчанию задач и различные «внутренние» задачи на основе определенных выборов некоторых задач, как я могу реализовать интерфейс между чтением/записью файла XML и UI + Engine? Тот, который скрывает «внутренние» задачи от пользовательского интерфейса, но отслеживает их, записывая их в XML-файл и настраивая различные настройки на основе типа сценария?