【问题标题】:Extending the Composite pattern?扩展复合模式?
【发布时间】:2012-03-23 14:28:16
【问题描述】:

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

  • 复合节点A
    • 叶子1
    • Leaf2
    • ...
  • 复合节点B ....

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

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

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

【问题讨论】:

    标签: c# design-patterns composite


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-07-05
      • 1970-01-01
      • 2011-01-20
      • 1970-01-01
      • 2012-12-19
      • 1970-01-01
      • 2010-09-05
      • 2018-01-06
      相关资源
      最近更新 更多