2011-03-06 131 views
9

我想看看在實際應用程序/ API中如何使用Builder模式。我發現的例子都是比薩餅,蛋糕,汽車等等(加上GoF書中的解析器例子)。Builder模式的真實世界示例

您能否介紹一下這個patten在真實世界的應用程序/ API中的用法,最好來自C++,.NET或PHP世界(因爲這些是我熟悉的語言)。

謝謝。

+0

相關的問題:http://stackoverflow.com/questions/328496/when-would-you-use-the-builder-pattern – 2011-03-06 14:34:13

回答

6

更新:我最近遇到了一個更好的例子(imo)。檢出JobBuilder和TriggerBuilder實現在Quartz調度包:http://quartz-scheduler.org/api/2.1.5/

此外,當我有時間,只是爲了好玩/實踐中,我試圖用Java編寫所有的GoF模式的例子。就在最近,我使用Builder模式來輕鬆生成不同類型的Sitemaps(谷歌網站地圖vs html網站地圖等)。代碼是在java中,但你可能會很有用:https://github.com/dparoulek/java-koans/tree/master/src/main/java/com/upgradingdave/koans/builder

好問題,我會有興趣看到更現代的例子。

+0

這實際上是非常好的例子,謝謝。 – 2011-03-08 16:18:54

+0

@Dave Paroulek - 檢查這[post](http://stackoverflow.com/questions/15461083/builder-pattern-which-variant-is-preferred)並解釋爲什麼它不好。分享我今天學到的東西 - Builder模式的不變性方面! – Narita 2015-02-04 10:15:39

2

在構建Json對象時,Builder模式用於javax.json.Jsonjavax.json.JsonBuilder類。

很好的解釋是在http://www.programcreek.com/java-api-examples/index.php?api=javax.json.JsonObjectBuilder,也檢查出它的official documentation

JsonObjectBuilder b = Json.createObjectBuilder(). 
      add("report", Json.createObjectBuilder(). 
       add("reportId", reportId). 
       add("title", title). 
       add("subtitle", subTitle == null ? "" : subTitle). 
       add("created", created.toString()). 
       add("description", description == null ? "" : description). 
       add("data", report) 
      ); 
return b.build();