Autor: Francisco José Bibiloni Afanador DNI.: 43.123.105-Z Prof.: Yuhua Luo ÍNDICE • Introducción Patrones de Diseño • Patrón Builder • Implementación Builder en la Práctica. Introducción ¿Por qué se utilizan los Patrones de Diseño? Principalmente la utilización de los patrones ha venido por la escasa reutilización de trabajos en desarrollo de software. Por cuya causa se han recopilado, y se recopilan, técnicas que permitan la reutilización en el Desarrollo de Software. Introducción Ventajas de la Reutilización: • Se abrevia la programación • Para futuras renovaciones del código, la reutilización facilita el trabajo de mantenimiento • Mejora la fiabilidad • El código se va mejorando repetidamente al largo del tiempo, ya que se va mejorando constantemente, por optimización y mejoras de rendimiento, por ejemplo. • Y algunas más … ¿CUÁNTOS PATRONES TENEMOS? Introducción Ámbito Propósito Creación Clase Comportamiento - Factory Method - Adapter - Template Method - Interpreter - Abstract Factory - Prototype - Singleton -Adapter - Bridge - Composite - Decorator - Facade - FlyWeight - Proxy - Chain of Responsability - Command - Iterator - Mediator - Memento - Observer - State - Strategy - Visitor Objeto Estructural Builder Patrón Builder • PROPÓSITO: “CREACIÓN”. El objetivo es conseguir que la construcción de un OBJETO COMPUESTO sea independiente de su REPRESENTACIÓN, de manera que la CONSTRUCCIÓN no se vea afectada por el hecho de que cambie su forma de REPRESENTACIÓN. Ejemplo: Podemos crear Pizzas Podemos crear Medicamentos Podemos crear Children’s Meal … Patrón Builder • MOTIVACIÓN: Nos facilita la construcción de un objeto con una composición de más objetos. El caso habitual es la de construir una Interfaz de usuario. Ejemplo más Concreto: Crear una Interfaz para Crear Pizzas… Patrón Builder Problema: Un Empresario desea abrir una Pizzería para ventas a domicilio. Sólo tendrá 2 tipos de Pizzas distintas. Solución: Sabemos que tendremos lo siguiente: • Builder: “PizzaBuilder” • Director: “Cocina” • Producto: “Pizza” • Concrete Builder: “PizzaTurca y PizzaCalzone” Patrón Builder • APLICABILIDAD: Lo utilizaremos cuando en nuestra aplicación queramos que: El algoritmo para la creación de cuyo objeto complejo, deber ser independiente de las partes que lo forman y cómo están ensambladas. El proceso de construcción debe permitir diferentes representaciones del objeto que se construye. Patrón Builder • ESTRUCTURA: Patrón Builder • PARTICIPANTES: Builder: Especifica una interfaz abstracta para crear las partes de un objeto Producto. ConcreteBuilder: Construye y ensambla las partes del Producto Define la Representación a Crear Proporciona una interfaz para recuperar el Producto. Director: El encargado de crear el Objeto Complejo utilizando la interfaz Builder. Producto: Representa el Objeto Complejo en Construcción. Patrón Builder • COLABORACIONES: Lo más relevante desde nuestro punto de vista es: ¿Cómo utilizar el Patrón Builder en la práctica? Con todo lo explicado hasta ahora sólo es teoría, de cómo se estructura esta receta/plantilla… pero podríamos implementar incorrectamente este patrón sin leer este punto. Veamos los pasos a seguir para implementar el Patrón Builder: Patrón Builder 1. El Cliente crea el objeto Director y lo configura con el objeto Builder deseado (PizzaTurca, por ejemplo). 2. El Director notifica al constructor cuándo 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. Patrón Builder • CONSECUENCIAS: Permite variar la representación interna de un Producto: como el producto se construye a través de una interfaz abstracta, para cambiar la representación interna del producto es definir un nuevo tipo de constructor. Permite separar el código de la construcción y la representación. Da control refinado sobre el proceso de construcción. El patrón Builder construye el producto paso a paso bajo el control del Director. Implementación En este punto voy a describir como he implementado el patrón Builder a mi práctica. LA PRÁCTICA. Enunciado: una fábrica Farmacéutica desea informatizar todo el Sistema de Creación de sus Productos farmacéuticos. En concreto esta empresa realiza 8 distintos tipos de medicamentos Antitusivo Jarabe Anagésico Píldora Analgésico Líquido Antibiótico Capsula Antibiótico Efervescente Antipirético Supositorio Antipirético Gotas Antigripal Sobres Implementación Solución: Lenguaje utilizado JAVA Se ha implementado una aplicación WEB con un Diseño Modelo – Vista – Controlador. Dentro del Modelo se ha incluido una Package en el cual contiene toda la implementación del Patrón Builder (clase Builder, el Producto, etc.) Implementación Implementación VEAMOS ALGO UN POCO MÁS AMENO… Bibliografía http://en.wikipedia.org/wiki/Builder_pattern http://www.allapplabs.com/java_design_patterns/builder_pattern.h tm http://www.programacion.com/java/articulo/joa_patrones3/#joa_ patrones3_constructor http://www.programmersheaven.com/articles/faisal/pattern.htm http://www.apwebco.com/gofpatterns/creational/Builder.html