User Tools

Site Tools


wiki:pdd_3

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
wiki:pdd_3 [2024/09/02 01:22] adminwiki:pdd_3 [2024/09/02 01:27] (current) admin
Line 9: Line 9:
                   setEditoral("UCN").setAno(2020).build();                   setEditoral("UCN").setAno(2020).build();
  
-Libro gof = new Libro.Builder().setName("Design Patterns").+Libro gof = new Libro.Builder().setNombre("Design Patterns").
                   setAutores("GoF").setAno(1995).build();                   setAutores("GoF").setAno(1995).build();
  
Line 17: Line 17:
  
 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://dl.acm.org/doi/book/10.5555/1377533|enlace]]). Esta versión, hoy en día, corresponde al uso más común de los Builders. Se utiliza, por ejemplo, en clases de la API de Java, como Calendar.Builder ([[https://docs.oracle.com/javase/9/docs/api/java/util/Calendar.Builder.html|enlace]]). 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://dl.acm.org/doi/book/10.5555/1377533|enlace]]). Esta versión, hoy en día, corresponde al uso más común de los Builders. Se utiliza, por ejemplo, en clases de la API de Java, como Calendar.Builder ([[https://docs.oracle.com/javase/9/docs/api/java/util/Calendar.Builder.html|enlace]]).
 +
 +
 +**Código Fuente:** El código fuente del ejemplo de Builder se muestra a continuación. Al estudiarlo, notará que ''Libro.Builder'' es una clase interna, pública y estática de Libro. Por eso, podemos llamar a ''new Libro.Builder()'' directamente, sin necesidad de instanciar antes un objeto del tipo Libro.
 +
 +<code java>
 +
 +class Libro {
 +   private String nombre;
 +   private String autores;
 +   private String editorial;
 +   private String ano;
 +  
 +   private Libro (String nombre, String autores, String editorial, String ano) {
 +     this.nombre = nombre;
 +     this.autores = autores;
 +     this.editorial = editorial;
 +     this.ano = ano;
 +   }
 +  
 +   public String toString() {
 +     return nombre + ". " + autores + "," + editorial + "," + ano;      
 +   }
 +    
 +   public static class Builder {
 +     private String nombre;
 +     private String autores;
 +     private String editorial;
 +     private String ano; 
 +     
 +     public Builder setNombre(String nombre) {
 +        this.nombre = nombre;
 +        return this;
 +     }
 +
 +     public Builder setAutores(String autores) {
 +        this.autores = autores;
 +        return this;
 +     }
 +     
 +     public Builder setEditorial(String editorial) {
 +        this.editorial = editorial;
 +        return this;
 +     }
 +     
 +     public Builder setAno(String ano) {
 +        this.ano = ano;
 +        return this;
 +     }
 +     
 +     public Libro build() {
 +        return new Libro(nombre, autores, editorial, ano); 
 +     }
 +  }
 +}
 +
 +public class Main {
 +  public static void main(String [] args) {
 +     Libro esm = new Libro.Builder()
 +                          .setNombre("Ingenieria de Software")
 +                          .setEditorial("UCN")
 +                          .setAno("2020")
 +                          .build();
 +     System.out.println("Libro 1: " + esm.toString());
 +     
 +     Libro gof = new Libro.Builder()
 +                          .setNombre("Design Patterns")
 +                          .setAutores("GoF")
 +                          .setAno("1995")
 +                          .build();
 +     System.out.println("Libro 2: " + gof.toString());                        
 +  }
 +}
 +
 +</code>
wiki/pdd_3.1725254537.txt.gz · Last modified: 2024/09/02 01:22 by admin