Foros del Web » Programación para mayores de 30 ;) » Java »

Ej Patrón Builder

Estas en el tema de Ej Patrón Builder en el foro de Java en Foros del Web. Hola como andan? estaba estudiando el patrón builder y hay una parte que no la alcanzo a entender si alguien tuviera un tiempito me podría ...
  #1 (permalink)  
Antiguo 27/06/2009, 17:04
 
Fecha de Ingreso: enero-2008
Mensajes: 53
Antigüedad: 16 años, 10 meses
Puntos: 0
Ej Patrón Builder

Hola como andan? estaba estudiando el patrón builder y hay una parte que no la alcanzo a entender si alguien tuviera un tiempito me podría explicar como funciona? desde ya muchisimas gracias.

Les copio el ejemplo entero. Pero la duda que yo tengo es la parte /** "Director" */ muchas gracias.
Código:
/** "Producto" */
class Pizza {
    private String masa = "";
    private String salsa = "";
    private String relleno = "";
 
    public void setMasa(String masa)     { this.masa = masa; }
    public void setSalsa(String salsa)     { this.salsa = salsa; }
    public void setRelleno(String relleno) { this.relleno = relleno; }
}
 
 
/** "Abstract Builder" */
abstract class PizzaBuilder {
    protected Pizza pizza;
 
    public Pizza getPizza() { return pizza; }
    public void crearNuevaPizza() { pizza = new Pizza(); }
 
    public abstract void buildMasa();
    public abstract void buildSalsa();
    public abstract void buildRelleno();
}
 
 
/** "ConcreteBuilder" */
class HawaiPizzaBuilder extends PizzaBuilder {
    public void buildMasa()   { pizza.setMasa("suave"); }
    public void buildSalsa()   { pizza.setSalsa("dulce"); }
    public void buildRelleno() { pizza.setRelleno("chorizo+alcachofas"); }
}
 
/** "ConcreteBuilder" */
class PicantePizzaBuilder extends PizzaBuilder {
    public void buildMasa()   { pizza.setMasa("cocida"); }
    public void buildSalsa()   { pizza.setSalsa("picante"); }
    public void buildRelleno() { pizza.setRelleno("pimienta+salchichón"); }
}
 
 /** "Director" */
class Cocina {
    private PizzaBuilder pizzaBuilder;
 
    public void setPizzaBuilder(PizzaBuilder pb) { pizzaBuilder = pb; }
    public Pizza getPizza() { return pizzaBuilder.getPizza(); }
 
    public void construirPizza() {
       pizzaBuilder.crearNuevaPizza();
       pizzaBuilder.buildMasa();
       pizzaBuilder.buildSalsa();
       pizzaBuilder.buildRelleno();
    }
}
 
 /** Un cliente pidiendo una pizza. */
class BuilderExample {
    public static void main(String[] args) {
/**El cliente crea un director y lo configura con el objeto builder deseado
	 Cocina cocina = new Cocina();
/** Se crean las diferentes representaciones        
 	PizzaBuilder hawai_pizzabuilder = new HawaiPizzaBuilder();
        PizzaBuilder picante_pizzabuilder = new PicantePizzaBuilder();
/** Se manda a construir el objeto desde el director 
        cocina.setPizzaBuilder( hawai_pizzabuilder );
        cocina.construirPizza();
/** Se asigna el resultado a producto 
        Pizza pizza = cocina.getPizza();
    }
}
  #2 (permalink)  
Antiguo 27/06/2009, 21:37
Avatar de JairLizcano  
Fecha de Ingreso: junio-2008
Ubicación: Santander, Colombia
Mensajes: 608
Antigüedad: 16 años, 5 meses
Puntos: 53
Respuesta: Ej Patrón Builder

Traduciré: la clase cocina nombra como atributo private una referencia de la clase PizzaBuilder. A través del método setPizzaBuilder() que permite como único parametro una referencia de la clase PizzaBuilder "asigna" el objeto al atributo PizzaBuilder de la clase cocina.

Analiticamente la clase PizzaBuilder tiene una única función, "gestionar la pizza", ya que dicha clase será igual para todas las pizzas, por ello se destaca como abstract.

Documentación: clase abstract.
  #3 (permalink)  
Antiguo 28/06/2009, 10:30
 
Fecha de Ingreso: enero-2008
Mensajes: 53
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: Ej Patrón Builder

Gracias por la respuesta pero en esta parte que se hace?

Código:
 public void setPizzaBuilder(PizzaBuilder pb) { pizzaBuilder = pb; }
  #4 (permalink)  
Antiguo 28/06/2009, 11:16
Avatar de JairLizcano  
Fecha de Ingreso: junio-2008
Ubicación: Santander, Colombia
Mensajes: 608
Antigüedad: 16 años, 5 meses
Puntos: 53
Respuesta: Ej Patrón Builder

Cita:
Iniciado por chacamariano Ver Mensaje
Gracias por la respuesta pero en esta parte que se hace?

Código:
 public void setPizzaBuilder(PizzaBuilder pb) { pizzaBuilder = pb; }
Guiate por lo siguiente, dicho método es sólo de asignación, le entregará un objeto de la clase PizzaBuilder a la referencia pizzaBuilder de la clase Cocica.

El primer argumento de dicho método es estrictamente una referencia de la clase PizzaBuilder.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:00.