2011-03-06 116 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();