Ver Mensaje Individual
  #1 (permalink)  
Antiguo 27/06/2009, 17:04
chacamariano
 
Fecha de Ingreso: enero-2008
Mensajes: 53
Antigüedad: 17 años
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();
    }
}