2012-03-06 81 views
0

我使用Composite pattern表示分層數據結構:擴展複合模式?

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

每個葉代表一個特定的任務。首先,向用戶呈現特定場景的默認任務列表,然後用戶檢查/取消選中某些任務(例如,使用TreeView控件),並在接受選擇時,將數據全部持久保存到XML文件中。這些數據稍後會被(1)完成選中任務的引擎或(2)UI顯示已被選中的任務列表使用。

在某些情況下,某些(複雜)任務需要額外的「內部」任務作爲引擎生成複雜任務的先決條件。但是我不希望將這些「內部」任務顯示給用戶,但它們仍然被引擎使用並寫入XML文件。

知道我可以擁有大量不同的場景類型(每個場景都有自己的XML文件),每個場景都有完全不同的列表/排列/默認選擇任務,以及基於某些選擇的不同「內部」任務的一些任務,我如何實現XML文件的讀取/寫入和UI +引擎之間的接口?一個隱藏UI中的「內部」任務,但通過將它們寫入XML文件來跟蹤它們,並且允許在場景類型基礎上進行不同的自定義?

回答

1

從我的理解你基本上有一個任務列表,這些可以有子任務。因此,這裏是我的想法:

  • 所有任務從一個共同的任務類/接口(內部或外部任務之間沒有區別 )
  • 每個任務都有一個任務列表(這將是它的內部/子派生任務)
  • 此列表還應爲子/內部任務
    (例如是否可見)分配屬性。請注意,任務不會隱藏 或本身內部。所以這樣一個屬性不應該在任務級別 ,但在一個任務是關聯到另一個任務的級別。
  • 此外,UI /引擎如何處理任務應該與實際上的任務 不同。因此,在任務級別提及的UI /引擎特定設置不應該是 。

我知道這是有點抽象的一面,但讓我知道這是否回答你的問題,或者如果有任何混淆。