Está en la página 1de 33

Ingeniería del Software Orientada a Objetos

TEMA 5:

PATRONES DE DISEÑO

Ing. Francisco Rodríguez Dr.

Agenda
‡ ‡ ‡ ‡ ‡ ‡ Qué es un Patrón de Software Características de los Patrones de Diseño. Artefactos de Diseño Categorías de Patrones Patrones de Comportamiento Patrones de Creación

Qué es un Patrón de Software
‡ Un Patrón describe una solución probada a un problema recurrente de diseño, el cual ocurre en un contexto. ‡ Describe un problema recurrente. ‡ Especifica contextos de diseño. ‡ Propone una solución probada
± Componentes ± Responsabilidades de los componentes. ± Relaciones para colaborar.

‡ Un arquitecto experimentado reutiliza: Arquitecturas de sistemas exitosos.Qué es un Patrón de Software ‡ Un arquitecto reutiliza patrones para definir la estructura y el comportamiento interno y externo de un sistema. . Diseños que han funcionado correctamente en el pasado Frameworks conceptuales y exitosos Componentes y librerias.

Referencias .

desarrolladores. ‡ Describen un grupo de componentes. sus relaciones. ‡ Proveen un vocabulario común entre los diseñadores. interacciones y responsabilidades. ‡ Proveen una plantilla / molde conceptual para dar solución a un problema de diseño . provienen de la experiencia practica.Características de los Patrones de Diseño ‡ No son inventados.

Categorías de Patrones .

Categorías de Patrones Creacional Clases Estructural Comportamiento Usan la herencia para describir algoritmos y flujos de control. Describen formas de ensamblar objetos. Delegan parte de la creación a otro objeto. Objetos . Describen cómo grupos de obejtos colaboran para llevar a cabo una tarea. Delegan parte Usan la de la creación herencia para a las subclases componer clases.

Patrones de Comportamiento .

Patrones de Comportamiento ‡ Relacionados con la asignación de responsabilidades entre clases. ‡ Enfatizan la colaboración entre objetos. ‡ Asignación de responsabilidad = Distribuir el comportamiento. . ‡ Caracterizan un flujo de control más o menos complejo que será transparente a la clase que utilice el patrón.

± Permite variar los algoritmos de forma independiente a los clientes que los usan. .Strategy/Policy (Estrategia) ‡ Propósito ± Define una familia de algoritmos. encapsula cada uno. y permite intercambiarlos.

. ± Una clase define muchos comportamientos que aparecen como sentencias CASE en sus métodos. ± Se necesitan diferentes variantes de un algoritmo.Strategy/Policy (Estrategia) ‡ Aplicabilidad ± Configurar una clase con uno de varios comportamientos posibles.

± Elimina sentencias CASE. ± El cliente puede elegir entre diferentes estrategias o implementaciones: debe conocer detalles. cambia el Propósito: ejemplos de composición con delegación.Strategy/Policy (Estrategia) ‡ Ventajas ± Define una familia de algoritmos relacionados. . ± State y Strategy son similares.

Strategy/Policy (Estrategia) .

± Contexto: Se configura con un objeto Concrete Strategy y mantiene referencia a un objeto Strategy. ± Concrete Strategy: Implementa el algoritmo usado en la interfaz Strategy. .Strategy/Policy (Estrategia) ‡ Participantes ± Strategy: Declara una interfaz común a todos los algoritmos permitidos.

Aplicar el descuento al contenedor elegido.Strategy ± Caso Práctico ‡ Caso: Existe un cálculo de descuento aplicado al costo de transporte de un contenedor que depende del tipo. .

Strategy ± Caso Práctico .

Strategy ± Caso Práctico .

Strategy/Policy (Estrategia) ‡ Implementación ± ¿Cómo una estrategia concreta accede a los datos del contexto? ‡ Pasar datos como argumentos. ‡ Pasar el contexto como argumento. . ‡ Estrategia almacena una referencia al contexto.

Patrones de Creación .

cómo se crea y cuándo se crea . ‡ El sistema conoce las clases abstractas.Patrones de Creación ‡ Se encapsula: ± Qué clases concretas usa el sistema. quien lo hace. ‡ Flexibilidad en qué se crea. ± Cómo se crean las instancias de esas clases.

‡ Dos tipos: ± Clase: usa herencia para variar la clase que es instanciada. ± Objeto: delega instanciación a otro objeto.Patrones de Creación ‡ Abstraen el proceso de creación de objetos. ‡ Ayudan a crear sistemas independientes de cómo los objetos son creados. compuestos y representados. .

o un spooler de impresoras o de un sistema de ficheros o una factoría abstracta ± La clase se encarga de asegurar que exista una única instancia y de su acceso.Singleton ‡ Propósito ± Asegurar que una clase tiene una única instancia y asegurar un punto de acceso global ‡ Motivación ± Un manejador de ventanas. .

± La clase Singleton puede tener subclases. accesible globalmente. ± Evita usar variables globales. ‡ Consecuencias ± Acceso controlado a la única instancia. ± Generalizar a un número variable de instancias.Singleton ‡ Aplicabilidad ± Debe existir una única instancia de una clase. .

± Devolver una instancia de múltiples tipos de objetos. . que provienen de una misma clase padre diferenciándose entre ellos por algún aspecto de comportamiento.Factory Method ‡ Propósito ± Define una interfaz para crear un objeto. pero permite a las subclases decidir la clase a instancias: instanciación diferida a las subclases.

‡ Ventajas ± Evitar ligar un código a clases especificas de la aplicación. . ± Una clase desea que sus subclases especifiquen los objetos que debe crear. ± Mayor flexibilidad en la creación: subclases ofreciendo versiones extendidas de un objeto.Factory Method ‡ Aplicabilidad ± Una clase no puede anticipar la clase de objetos que debe crear.

Factory Method .

Factory Method ‡ Participantes ± Product: Define la interfaz de los objetos que crea el método de fabricación. ± Concrete Creator: Redefine el método de fabricación para devolver instancia de Concrete Product. . ± Creator: Declara el método de fabricación el cual devuelve un objeto de tipo Product. ± ConcreteProduct: Implementa la interfaz de Product.

.Factory Method ± Caso Práctico Caso: Elegir una clase vehículo o documento y crear el objeto mostrando su descripción.

Factory Method ± Caso Práctico .

Factory Method ± Caso Práctico .

‡ Creador es una clase concreta que ofrece una implementación por defecto del método factoría. ± El método factoría puede tener un parámetro que identifica a la clase del objeto a crear.Factory Method ‡ Implementación ± Dos posibilidades ‡ Creador es una clase abstracta con un método factoría abstracto. .

FIN .