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(); } }