This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
wiki:pdd_3 [2024/09/02 00:05] – created admin | wiki:pdd_3 [2024/09/02 01:27] (current) – admin | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== Builder ====== | ====== Builder ====== | ||
+ | Builder es un patrón de diseño que facilita la instanciación de objetos que tienen muchos atributos, algunos de ellos opcionales. Si el valor de estos atributos opcionales no se proporciona, | ||
+ | |||
+ | <code java> | ||
+ | |||
+ | Libro esm = new Libro.Builder(). | ||
+ | setNombre(" | ||
+ | setEditoral(" | ||
+ | |||
+ | Libro gof = new Libro.Builder().setNombre(" | ||
+ | setAutores(" | ||
+ | |||
+ | </ | ||
+ | |||
+ | Una primera alternativa al uso de un Builder sería implementar la instanciación mediante constructores. Sin embargo, tendríamos que crear varios constructores, | ||
+ | |||
+ | Cabe destacar que la versión de Builder que se presenta no corresponde a la descripción original del patrón contenida en el libro de la Gang of Four. En su lugar, se presenta una versión propuesta por Joshua Bloch ([[https:// | ||
+ | |||
+ | |||
+ | **Código Fuente:** El código fuente del ejemplo de Builder se muestra a continuación. Al estudiarlo, notará que '' | ||
+ | |||
+ | <code java> | ||
+ | |||
+ | class Libro { | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | } | ||
+ | | ||
+ | | ||
+ | | ||
+ | } | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | | ||
+ | this.nombre = nombre; | ||
+ | return this; | ||
+ | } | ||
+ | |||
+ | | ||
+ | this.autores = autores; | ||
+ | return this; | ||
+ | } | ||
+ | |||
+ | | ||
+ | this.editorial = editorial; | ||
+ | return this; | ||
+ | } | ||
+ | |||
+ | | ||
+ | this.ano = ano; | ||
+ | return this; | ||
+ | } | ||
+ | |||
+ | | ||
+ | return new Libro(nombre, | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | |||
+ | public class Main { | ||
+ | public static void main(String [] args) { | ||
+ | Libro esm = new Libro.Builder() | ||
+ | .setNombre(" | ||
+ | .setEditorial(" | ||
+ | .setAno(" | ||
+ | .build(); | ||
+ | | ||
+ | |||
+ | Libro gof = new Libro.Builder() | ||
+ | .setNombre(" | ||
+ | .setAutores(" | ||
+ | .setAno(" | ||
+ | .build(); | ||
+ | | ||
+ | } | ||
+ | } | ||
+ | |||
+ | </ |