patron builder

12
Erika Alexandra Alvarez Gómez

Upload: ealexandraag

Post on 29-Jan-2018

315 views

Category:

Education


0 download

TRANSCRIPT

Page 1: Patron builder

Erika Alexandra Alvarez Gómez

Page 2: Patron builder

Su intención es de abstraer el proceso de creación de unobjeto completo, centralizando dicho proceso en un únicopunto, de tal forma que el mismo proceso de construcciónpueda crear representaciones diferentes.

Page 3: Patron builder

Utilizado para permitir la creación de objetos complejos apartir de un objeto fuente.

El objeto fuente contiene varias partes queindividualmente contribuyen a la creación de cada objetocomplejo a través de un conjunto de llamadas a interfacescomunes de la clase Abstract Builder.

Page 4: Patron builder

BUILDER: Interfaz abstracta para crear productos

CONCRETE BUILDER: Implementación del Builder Construye y reúne las partes necesarias para construir los productos

DIRECTOR: Construye un objeto usando el patrón Builder

PRODUCTO: El objeto complejo bajo construcción.

Page 5: Patron builder
Page 6: Patron builder

1. El cliente crea el objeto Director y lo configura con el objeto Builder deseado (HawaiPizza por ejemplo).

2. El Director notifica al constructor cuando una parte del producto se debe construir.

3. El Builder maneja los requerimientos desde el director y agrega partes al producto.

4. El Cliente recupera el producto desde el constructor.

Page 7: Patron builder

package Clases;

import javax.swing.JApplet;

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

}}

Director: Cocina

Page 8: Patron builder

package Clases;

import javax.swing.JApplet;

public 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; }

}

Builder: Pizza

Page 9: Patron builder

package Clases;

import javax.swing.JApplet;

public 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: PizzaBuilder

Page 10: Patron builder

package Clases;

import javax.swing.JApplet;

public class HawaiPizzaBuilder extends PizzaBuilder {

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

}

Producto: HawaiPizzaBuilder

Page 11: Patron builder

package Clases;

import javax.swing.JApplet;

public class PicantePizzaBuilder extends PizzaBuilder {

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

}

Producto: PicantePizzaBuilder

https://www.youtube.com/watch?v=M1VOvNaiJPc

Page 12: Patron builder

Reduce el acoplamiento. Permite variar la representación interna de estructuras

complejas. Se independiza del código de construcción de la representación. Cada ConcreteBuilder tiene el código especifico para crear y

modificar una estructura interna concreta. Permite un mayor control en el proceso de creación del objeto.