Sie sind auf Seite 1von 18

Programación Orientada a Objetos

Patrones de Software
Agenda
PATRONES DE DISEÑO
 1. Introducción
 2. Definición
 3. Objetivos de los patrones
 4. Categorías de patrones
 5. Estructuras o plantillas de patrones
Patrones: Introducción
 Introducción:
 Aparecieron a lo largo del tiempo y a través de un proceso de intentos y
errores.
 Resuelven problemas complejos de programación.
 Es una técnica comprobada que se utiliza para desarrollar una aplicación
eficiente.
 Evita caer en errores comunes al diseñar y construir aplicaciones.
 Es el fundamento para la búsqueda de soluciones efectivas a problemas
comunes en el diseño y desarrollo de software
Patrones: Introducción
 Introducción:
 Son reusables, es decir se puede aplicar a diferentes problemas de diseño
similares.
 No son principios abstractos que requieran su redescubrimiento.
 Describe y resume las cualidades invariantes más relevantes de todas las
soluciones.
 NO IMPORTA LA HERRAMIENTA QUE SE UTILICE, EL PATRON ES
ABSTRACCION QUE PUEDE SER CODIFICADA EN CUALQUIER
TECNOLOGIA.
Patrones: Introducción
Sin Patrones Patrones

- Construír mi sistema X - Analizar el Problema


- Realizar la Abstracción para patrones
- La Lógica la diseño como puedo… (Ordeno mis clases).
- Diseñar de acuerdo a una arquitectura
- La idea es que me funcione en la herramienta X - No importa la Herramienta, el diseño debe
y no el diseño y arquitectura de mi sistema soportar cualquier herramienta (UML).
-Veo si utilizo Tecnología Distribuida ?
- Soy Capo en EJB, COM+, Jaguar, etc, etc - Mi sistema es mantenible gracias a los
patrones.
- Realmente mi sistema es mantenible??? - Ing. no es utilizar herramientas es saber
- Cómo estructure la Arquitectura de mi sistema?? ingeniar
- Utilicé patrones???
¿Qué es un patrón de diseño?
 Es una solución bien documentada que los expertos
aplican para solucionar nuevos problemas porque han sido
utilizadas con éxito en el pasado
 Los expertos identifican partes de un problema que son
similares a otros problemas que han encontrado
anteriormente
 Recuerdan la solución aplicada y la generalizan
 Adaptan la solución general al contexto del problema actual
¿Qué es un patrón de diseño?
 Son una forma estandarizada para representar soluciones
generales de problemas que se encuentran comúnmente en el
desarrollo de software orientado a objetos
 Beneficios
 Catálogos de patrones
 Están documentados los pros y los contras de cada patrón. Se
conocen las implicaciones de su aplicación
 Proporcionan un vocabulario común entre desarrolladores
Patrones: Definición
 Definición:
 Christopher Alexander Creador de “The Tímeless Way of Building” (Arq)
 La idea era tener formas predefinidas para solucionar situaciones comunes.
 Conocidos como una regla 3 partes: el problema, un contexto y la solución.
 Facilitan la reutilización del diseño y de la arquitectura.
 En 1987, Cunningham y Beck realizan el primer artículo acerca de Patrones
para POO. (OOPSLA-87).
Patrones: Objetivo
 Objetivo:
 Proporcionar catálogos de elementos reusables.
 Evitar repetitivas búsquedas de soluciones a problemas ya conocidos y
resueltos anteriormente.
 Formalizar un vocabulario común entre diseñadores.
 Estandarizar el modo en que se realiza el diseño.
 NO impone alternativas de diseño frente a otras.
 NO eliminar la creatividad inherente al proceso de diseño.
 No es obligatorio utilizar los patrones siempre.
 En el caso de tener el mismo problema o similar que soluciona el patrón.
Abstracción y Reutilización
 Los patrones suponen una evolución en la abstracción y
reutilización en la programación
 Abstracción
 Resolución de problemas complejos dividiéndolos en otros más
simples
 Capacidad de ocultar detalles superfluos y centrarse en lo
relevante para reducir la complejidad
Abstracción y Reutilización
 Reutilización
 Posibilidad de usar de nuevo código ya desarrollado
anteriormente
 Formas de reutilización
 Copiar y Pegar !!PELIGRO¡¡
 Reutilización de algoritmos (búsquedas, ordenaciones, …)
 Reutilización de funciones (métodos)
 Reutilización de librerías o APIs (métodos, clases, …)
Abstracción y Reutilización
 Abstracción y Reutilización en Programación Orientada a
Objetos
 Abstracción funcional y de datos
 La encapsulación implica mejor reutilización
 La herencia permite formas de reutilización antes no posibles
 Es posible desarrollar algoritmos de forma genérica y especializarlos creando
clases hijas y redefiniendo o implementando ciertos métodos
Abstracción y Reutilización
Tipo de ¿Se puede aplicar ¿Qué se abstrae? Genericidad
Reutilización de nuevo?
Fragmento de Muy Pobre Nada Muy pobre
código
Estructura de datos Buena Tipos de datos Moderada-Buena
Funcional Buena Método Moderada-Buena
Tipos Genéricos Buena Operación para tipo Buena
Algoritmo Buena Fórmula Buena
Clases (Interfaz, Buena Datos + Métodos Buena
Polimorfismo, Clase
abstracta)
API (Librería) Buena Clases útiles Buena-Muy Buena
Componente Buena Grupo de Clases Buena-Muy Buena
Patrón de Diseño Excelente Solución a un Muy Buena
problema
Tipos de Patrones
 Patrones de Creación
 Facilitan y simplifican la creación de objetos. Se utilizan cuando
debemos crear objetos pero debemos tomar decisiones
dinámicamente en el proceso de creación.
 Permiten crear objetos sin definir la clase concreta, sólo la
interfaz que debe implementar
 Permiten reutilizar otros objetos en vez de crear nuevos debido
a restricciones o eficiencia
 Patrones de creación son: Abstract Factory, Builder, Factory
Method, Object Pool, Prototype y Singleton.
Tipos de Patrones
 Patrones de Comportamiento
 Guían el flujo de control del sistema (para facilitar la eficiencia y
facilitar el mantenimiento)
 Fundamentalmente especifican el comportamiento entre
objetos de nuestro programa. Hay varios: Chain of
Responsability, Command, Interpreter, Iterator, Mediator,
Memento (o Snapshot), Observer, State, Strategy, Template
Method y Visitor.
Tipos de Patrones
 Patrones Estructurales
 Describen formas efectivas de partir y combinar los elementos
de una aplicación
 Permiten la comunicación de sistemas incompatibles, la
introducción de simplificaciones que mejoren la independencia
entre partes
 Describen como utilizar estructuras de datos complejas a partir
de elementos más simples. Sirven para crear las interconexiones
entre los distintos objetos y que estas relaciones no se vean
afectadas por cambios en los requisitos del programa. Algunos
ejemplos de patrones estructurales son: Adapter, Bridge,
Decorator, Facade, Flyweight y Proxy.
Plantilla Patrones
Los patrones están especificados siguiendo un formulario o formato
estándar
 Nombre del patrón: nombre estándar del patrón por el cual será
reconocido en la comunidad (normalmente se expresan en inglés).
 Clasificación del patrón: creacional, estructural o de
comportamiento.
 Intención: ¿Qué problema pretende resolver el patrón?
 También conocido como: Otros nombres de uso común para el
patrón.
 Motivación: Escenario de ejemplo para la aplicación del patrón.
 Aplicabilidad: Usos comunes y criterios de aplicabilidad del patrón.
 Estructura: Diagramas de clases oportunos para describir las clases que
intervienen en el patrón.
Plantilla Patrones
 Participantes: Enumeración y descripción de las entidades abstractas
(y sus roles) que participan en el patrón.
 Colaboraciones: Explicación de las interrelaciones que se dan entre
los participantes.
 Consecuencias: Consecuencias positivas y negativas en el diseño
derivadas de la aplicación del patrón.
 Implementación: Técnicas o comentarios oportunos de cara a la
implementación del patrón.
 Código de ejemplo: Código fuente ejemplo de implementación del
patrón.
 Usos conocidos: Ejemplos de sistemas reales que usan el patrón.
 Patrones relacionados: Referencias cruzadas con otros patrones.

Das könnte Ihnen auch gefallen