Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 10

BUILDER

• Permite la creación de un objeto


complejo a partir de la variedad de
partes que contribuyen
individualmente a la creación y
ensamblaje del objeto mencionado

DISEÑO DE SISTEMAS
BUILDER: ESTRUCTURA

Director builder Builder


Construct() builderPart()

para todos los elementos en la estructura{ ConcreteBuilder


builder->BuilderPart()
builderPart() Product
}
getResult()

DISEÑO DE SISTEMAS
BUILDER

Builder
especifica una interfaz abstracta para crear partes de un objeto de Producto

ConcreteBuilder
construye y ensambla las partes del producto mediante la implementación de la
interfaz Constructor, define y realiza un seguimiento de la representación que
crea proporciona una interfaz para recuperar el producto

Director
construye un objeto utilizando la interfaz Constructor

Producto
representa el objeto complejo en construcción. ConcreteBuilder construye
representación interna del producto y define el proceso por el cual está montado
incluye clases que definen las partes constituyentes, incluidas las interfaces
para el montaje de las partes en el resultado final
DISEÑO DE SISTEMAS
BUILDER
Fabricamos una pizza Hawai:

/** "ConcreteBuilder" */

class HawaiPizzaBuilder extends PizzaBuilder


{
public void buildMasa() { pizza.setMasa("suave"); }
public void buildSalsa() { pizza.setSalsa("dulce"); }
public void buildRelleno() { pizza.setRelleno("chorizo+alcachofas");
}
}

DISEÑO DE SISTEMAS
BUILDER
y una pizza Picante:

/** "ConcreteBuilder" */

class PicantePizzaBuilder extends PizzaBuilder


{
public void buildMasa() { pizza.setMasa("cocida"); }
public void buildSalsa() { pizza.setSalsa("picante"); }
public void buildRelleno() { pizza.setRelleno("pimienta+salchichon"); }
}

DISEÑO DE SISTEMAS
BUILDER
La clase abstracta que será utilizada por el Director es
PizzaBuilder

/** "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();
}
DISEÑO DE SISTEMAS
BUILDER class Patron Builder 2

PizzaBuilder
Cocina
+ buildMasa() : void
+ construirPizza() : void + buildSalsa() : void
+ buildRelleno() : void
+ getPizza() : Pizza
+ crearNuevaPizza() : void

PicantePizzaBuilder Haw aiPizzaBuilder

+ buildMasa() : void + buildMasa() : void


+ buildSalsa() : void + buildSalsa() : void
+ buildRelleno() : void + buildRelleno() : void

Pizza

- masa: char
- salsa: char
- relleno: char

+ setMasa() : void
+ setSalsa() : void
+ setRelleno() : void

DISEÑO DE SISTEMAS
BUILDER
/** "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(); }
}

DISEÑO DE SISTEMAS
FIN

10

También podría gustarte