如果你正在做一些線性鏈(java的StringBuilder)或者創建一個包含許多屬性的對象(PizzaBuilder),這看起來好像生成器模式很好。有沒有一種乾淨的方式來使用Builder模式來構建一個多級樹?
它可以擴展到構建一棵樹而不指定可能會令人困惑的節點位置?
a
/| \
c d e
/\
f g
TreeBuilder tb.addNode(levelNumber, parentNumber, nodeName) // I think this is terrible
tb.addNode(2, 3, g) //terrible
或者對於這種模式只是不是一個好主意?
感謝
StringBuilder不遵循Builder模式。構建器模式「定義了創建對象的實例,但讓子類決定實例化哪個類」。 – 2012-02-18 03:04:22
「建設者」,你的意思是一個所謂的流利建設者班?如果是這樣,[這個問題](http://stackoverflow.com/questions/563328/elegant-and-maintainable-way-of-populating-tree-structures-in-c-sharp)有點解決它。在這個組中,我最喜歡[這個答案](http://stackoverflow.com/a/563380/1215441)。 – cutchin 2012-02-18 04:41:58
@佳華 - 您提供的報價爲工廠方法,而不是生成器(並且可在GoF的封面找到)。 – kdgregory 2012-02-18 13:17:12