2013-02-26 25 views
3

如果您有組合設計模式(或任何圖/節點類型系統)的實現,哪種設計模式最能描述連接節點並在類實例之間創建鏈接的過程?可以使用什麼設計模式來連接組合元素?

我目前的工作示例使用工廠模式來構造每個類實例,但現在我正在考慮將它們連接到單獨的代碼區域或基於文件中的數據。

我在想,如果它可能是'建設者'模式,但我見過的例子都非常簡單,我發現它基於這些例子將模式應用到我的域中是一個非常大的跳躍。也許有另一種模式更適用於我的域,並引用了複合模式。例子和參考將不勝感激。

非常感謝 d

編輯:多一點點的調查已經變成了一個不錯的博客關於創建模式。他們說,根據經驗,「建設者」經常建造複合材料。

http://sourcemaking.com/creational_patterns

+0

+1對於有趣的問題和鏈接sourcemaking.com - 不錯的網站! – ngm 2013-02-27 10:26:33

回答

1

如果你想在同一時間構建整個組合元件製造商是一個很好的最佳的選擇。例如,如果您在城市中建立道路圖,並且您希望建造整個城市 - 使用建造者模式。你可以添加子建設者到你的建設者添加neighberhoods,所以你的建設者班級不會太大 - 只是爲bulder做複合。 但是如果你希望在複合已經存在之後添加元素,我建議如下: 如果你知道在哪裏添加元素,你可以爲你的組合提供迭代器,併爲迭代器提供添加方法給你的索引或新的地方添加您的元素。例如,如果你已經對樹進行了排序,那麼迭代器將具有函數add,該函數將根據其在樹中的位置知道在哪裏添加元素。 另一種選擇是,如果您需要將組合元素添加到每個地方並非真正沒有的組合中,例如,您用街道建造城市,並且希望在最短的街道旁邊添加街道。好吧,在這種情況下,我可能會使用謂詞或某種類型的過濾器,它們將會是複合類型中的靜態內部類。