2011-03-06 43 views
9

Me gustaría ver cómo se usa el patrón Builder en aplicaciones/API del mundo real. Los ejemplos que encontré son todas las pizzas, pasteles, autos, etc. (más el ejemplo del analizador del libro de GoF).Ejemplos del mundo real del patrón Builder

Podría decirme acerca de algunos usos de este patten en aplicaciones/API del mundo real, preferiblemente del mundo de C++, .NET o PHP (ya que esos son los idiomas con los que estoy familiarizado).

Gracias.

+0

pregunta relacionada: http://stackoverflow.com/questions/328496/when-would-you-use-the-builder-pattern –

Respuesta

6

Actualización: Recientemente encontré un ejemplo aún mejor (imo). Verifique las implementaciones de JobBuilder y TriggerBuilder en el paquete del programador de Quartz: http://quartz-scheduler.org/api/2.1.5/

Además, cuando tengo tiempo, solo por diversión/práctica, trato de escribir ejemplos de todos los patrones GoF en java. Hace poco, utilicé el patrón Builder para facilitar la generación de diferentes tipos de Sitemaps (google site map vs, html site map, etc.). El código está en Java, pero puede ser útil: https://github.com/dparoulek/java-koans/tree/master/src/main/java/com/upgradingdave/koans/builder

Una buena pregunta, me gustaría ver ejemplos más modernos también.

+0

Eso es realmente muy bonito ejemplo, gracias. –

+0

@Dave Paroulek - Verifique [post] (http://stackoverflow.com/questions/15461083/builder-pattern-which-variant-is-preferred) y explique por qué no es bueno. Compartir algo que también aprendí hoy: ¡el aspecto de inmutabilidad del patrón de Constructor! – Narita

2

El patrón de generador se utiliza en las clases javax.json.Json y javax.json.JsonBuilder al construir objetos Json.

Buena explicación está en http://www.programcreek.com/java-api-examples/index.php?api=javax.json.JsonObjectBuilder y también echa un vistazo a su 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(); 
Cuestiones relacionadas