扩展复合模式?

时间:2012-03-06 04:59:45

标签: c# design-patterns composite

我正在使用Composite pattern来表示分层数据结构:

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

每个Leaf代表一项特定任务。首先,向用户呈现特定场景的默认任务列表,然后用户检查/取消检查某些任务(例如,使用TreeView控件),并且在接受选择时,数据最终持久保存到XML文件。该数据稍后由(1)完成检查任务的引擎或(2)UI显示已选择的任务列表使用。

在某些情况下,某些(复杂)任务需要额外的“内部”任务作为引擎生成复杂任务的先决条件。但是,我不希望向用户显示这些“内部”任务,但它们仍然被引擎使用并写入XML文件。

知道我可以拥有大量不同的场景类型(每个场景都有自己的XML文件),每个场景都有完全不同的列表/排列/默认选择任务,以及基于某些选择的不同“内部”任务一些任务,我如何实现XML文件的读/写与UI +引擎之间的接口?一个从UI隐藏“内部”任务,但通过将它们写入XML文件来跟踪它们,以及允许基于场景类型进行不同自定义的任务?

1 个答案:

答案 0 :(得分:1)

根据我的理解,你基本上有一个任务列表,这些任务可以有子任务。所以这是我的想法:

  • 所有任务都来自一个共同的任务类/接口(没有区别 内部或外部任务之间)
  • 每个任务都有一个任务列表(这将是其内部/子任务)
  • 此列表还应为子/内部任务分配属性 (例如它是否可见)。请注意,任务未隐藏 或内部本身。所以这样的属性不应该在任务中 班级,但在一个任务与另一个任务相关的级别 任务。
  • 此外,UI / Engine如何处理任务应该与什么不同 这些任务实际上是。因此,UI / Engine特定设置不应该是 在任务级别提到。

我知道这有点抽象,但如果这回答了你的问题,或者是否有任何混淆,请告诉我。