La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

SISTEMAS DE LA INFORMACIÓN

Presentaciones similares


Presentación del tema: "SISTEMAS DE LA INFORMACIÓN"— Transcripción de la presentación:

1 SISTEMAS DE LA INFORMACIÓN
Patrones de diseño Por: Javier Alcalde Ruíz y Mario Rodríguez García

2 Patrón BUILDER 1 - Introducción 2 - Características 3 - Propósito
4 – Diagrama 5 – Código de ejemplo 6 – Problemas/Soluciones

3 1 – Introducción A veces surge la necesidad de crear varios tipos de objetos desde otro objeto (fuente) Dicho objeto fuente será quien, mediante una serie de servicios, cree el resto de los objetos en función de las necesidades del sistema.

4 2 - Características Es un patrón “creacional”
A menudo construye otro patrón, el “Composite” (estructural) Simplifica la construcción de objetos complejos definiendo una clase cuya responsabilidad es crear objetos de otras clases Builder ConcreteBuilder Director Product Son las clases que permiten el comportamiento del Builder

5 3 - Propósito Se pretende con este patrón abstraer el proceso de creación de un objeto complejo, centralizando dicho proceso en un único punto, de tal forma que el mismo proceso de construcción pueda crear representaciones diferentes.

6 4 - Diagrama Constructor Builder: Define una interfaz para la creación de partes de un objeto

7 4 - Diagrama Genera el objeto concreto ConcreteBuilder: Implementa la interfaz de Builder, mantiene referencia del producto creado y proporciona una interfaz que retorna el producto. Ensambla las piezas constituyentes

8 4 - Diagrama Quien dirige qué objeto se creará Director: Construye un objeto usando la interfaz proporcionada por Builder

9 4 - Diagrama Clase de los objetos que se quieren construir Product: Define las partes constituyentes del producto y representa un objeto complejo bajo construcción

10 5 – Código de ejemplo /** "Producto" */ /** "Abstract Builder" */
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();

11 5 – Código de ejemplo /** "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");

12 5 – Código de ejemplo /** "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){ Cocina cocina = new Cocina(); PizzaBuilder hawai_pizzabuilder = new HawaiPizzaBuilder(); PizzaBuilder picante_pizzabuilder = new PicantePizzaBuilder(); cocina.setPizzaBuilder(hawai_pizzabuilder); cocina.construirPizza(); Pizza pizza = cocina.getPizza(); }

13 6 – Problemas/Soluciones
A menudo la falta de experiencia puede llevarnos a utilizar un patrón en algún lugar donde habría sido mejor utilizar otro patrón. Ejemplos típicos pueden ser utilizar un patrón Builder en lugar de un patrón Abstract Factory, o utilizar un patrón Chain of Responsability en lugar de aplicar una cadena de Decorator, etc. El uso de patrones incorrectos puede provocar serias inconsistencias en nuestro modelo y la refactorización del mismo pueden ser bastante compleja, debido principalmente a que pueden haberse introducido diferentes dependencias en cadena.

14 6 – Problemas/Soluciones
Para no realizar la elección equivocada siempre es conveniente analizar las soluciones que se han tomado previamente a problemas similares al que estamos abordando. Con esta medida evitamos caer en equivocaciones, siempre y cuando nos basemos en sistemas que han resultado exitosos. Otra medida muy importante es la de dejarnos aconsejar por un mentor adecuado. Si no disponemos del conocimiento suficiente, no es una mala idea exponerle el problema a un experto o a una consultoría especializada en patrones de diseño. Además de obtener una solución avalada por dichos expertos seguramente podamos aprender muchos conocimientos y buenas prácticas de estas personas.


Descargar ppt "SISTEMAS DE LA INFORMACIÓN"

Presentaciones similares


Anuncios Google