Taller patrones de diseño

12
PATRONES DE DISEÑO ARBEY TOVAR ÁLVAREZ CORPORACIÓN UNIFICADA NACIONAL FACULTAD DE INGENIERÍA SISTEMAS

Transcript of Taller patrones de diseño

Page 1: Taller patrones de  diseño

PATRONES DE DISEÑO

ARBEY TOVAR ÁLVAREZ

CORPORACIÓN UNIFICADA NACIONAL

FACULTAD DE INGENIERÍA SISTEMAS

INGENIERÍA DEL SOFTWARE III

BOGOTÁ

2016

Page 2: Taller patrones de  diseño

PATRONES DE DISEÑO

ARBEY TOVAR ÁLVAREZ

TALLER

NÉSTOR ALEJANDRO PINZÓN LÓPEZ

INGENIERO Y AUDITOR DE SISTEMAS

CORPORACIÓN UNIFICADA NACIONAL

FACULTAD DE INGENIERÍA SISTEMAS

INGENIERÍA SOFTWARE III

BOGOTÁ

2016

Page 3: Taller patrones de  diseño

INTRODUCCIÓN

El presente taller tiene como finalidad repasar un  elemento fundamental en el diseño de

Software el pertinente a  Patrones de Diseño, en cuanto a su concepto, los tipos de diseño,

entre otros conceptos, se complementara con unos ejemplos en relación al proyecto sistema

experto de información para el diagnóstico del estrabismo en niños de 3 a 5 años.

Page 4: Taller patrones de  diseño

CONTENIDO

INTRODUCCIÓN...........................................................................................................................31. Que es un Patrón de Diseño?.......................................................................................................52. Cuáles son los tipos de patrón de diseño.....................................................................................53. Crear un ejemplo de tres de los patrones de diseño.....................................................................8

Page 5: Taller patrones de  diseño

PATRONES DE DISEÑO

1. ¿Que es un Patrón de Diseño?

Cada patrón describe la esencia para un problema que ocurre una y otra vez determinada

situación, descrito por la comunicación de entre las clases y objetos, permitiendo tener muchos

puntos de vista, con un diseño diferente cada contexto en particular.

Su finalidad es guardar la experiencia en diseños de programas orientados a objetos y

proporcionan ayuda a la hora de crear objetos desde el punto de vista de proporcionar un apoyo

en la toma de decisiones, incluso cuando esta toma de decisiones sea de forma dinámica.

Gracias a ello, ayudan a estructurar y encapsular estas decisiones. Hay ocasiones en la que nos

encontraremos con que sólo existe un patrón adecuado; otras en las que varios podrán ayudarnos;

y otras en que se pueden combinar múltiples patrones convenientemente.

Un patrón de creación asociado a clases usa la herencia para variar la clase que se instancia,

mientras que un patrón de diseño software de creación asociado a objetos delegará la

instanciación a otro objeto.

2. Cuáles son los tipos de patrón de diseño

Los patrones Singleton

Page 6: Taller patrones de  diseño

El Problema.

Se solicita generar un historial de los eventos ejecutados por 3 usuarios del sistema, estos eventos se generan cada vez que alguno de los usuarios presiona un botón determinado de un panel de opciones, este historial debe contener la fecha y hora de ejecución del evento, además del usuario y opción presionada.

La Solución.

Como nos piden que se genere un historial  de los eventos ejecutados por los usuarios utilizaremos el patrón Singleton, ya que este historial es general para todos los usuarios del sistema, así crearemos un punto global para la aplicación que permita ir almacenando cada evento generado independientemente de quien lo ejecute.

Visto en código Java, sería algo como esto:

public class ClaseLogSingleton { private String contenido;  /**objeto Singleton*/private static ClaseLogSingleton miLogSingleton= new ClaseLogSingleton(); private ClaseLogSingleton(){ setContenido("Eventos de Usuario\n\n") ;}/** * @return the miLogSingleton */public static ClaseLogSingleton getMiLogSingleton() { return miLogSingleton;}/** * @return the contenido */public String getContenido() {

Page 7: Taller patrones de  diseño

 return contenido;}/** * @param contenido the contenido to set */public void setContenido(String contenido) { this.contenido = contenido;}}

Los patrones Singleton

Complementado con la lectura de las diapositivas en el proyecto en curso, lo usaríamos para

realizar una copia de la foto tomada y pueda tomar dos rutas a la vez, bien sea local o una

copia de la foto para subir al sistema.

Page 8: Taller patrones de  diseño

3. Crear un ejemplo de tres de los patrones de diseño

Según la experiencia de personas que trabajan en el campo, entre los patrones se pelean las

funcionalidades, pero para el caso y el ejemplo según lo visto de los que más me llamo la

atención fue el de Abstract Factory que consiste en:

Nos encontramos frente a un problema en el que debemos crear diferentes objetos, todos

pertenecientes a la misma familia, como puede ser el sistema de librerías necesarias para crear

interfaces gráficas. Visto esto podríamos decir que lo que intenta solucionar el patrón de diseño

software de creación Abstract Factory es crear diferentes familias de objetos. El patrón Abstract

Factory, por tanto, se recomienda cuando se atisba la inclusión de nuevas familias de productos

en un futuro, pero resultaría contraproducente sí que necesita añadir nuevos productos o

modificar los existentes, ya que tendría repercusión en todas las familias creadas.

Page 9: Taller patrones de  diseño

Según esto, podemos decir que los componentes típicos del patrón Abstract Factory es la

siguiente, aplicado al proyecto del estrabismo, claro está con correcciones dentro del diseño.

Cliente: Usuario que llamara a un módulo Diagnostico y adecuado para iniciar la prueba y que

a su vez necesita crear uno de los objetos que provee dicha factoría, es decir, intentará obtener

una instancia de alguno de los productos que entren en juego (Fotografía 1= ProductoA,

Fotografia 2= ProductoB).

AbstractFactory: Definición de la interfaz que usarán las diferentes factorías. Como mínimo,

debe ofrecer un método para la obtención de cada objeto que se pueda crear. ("crearProductoA()"

y "crearProductoB()")

Concrete Factories: Aquí se representarán las diferentes familias de productos. Provee la

instancia concreta del objeto que se encarga de crear.

Abstract Product: Definirá las interfaces para la familia de Fotografias. En el diagrama son

Fotografia 1 "ProductoA" y factoría 2 "ProductoB". El cliente trabajará directamente sobre esta

interfaz, que será implementada por los diferentes módulos concretos.

Concrete Product: Se encargará de la implementación específica de los diferentes Modulos.

Page 10: Taller patrones de  diseño