Sei sulla pagina 1di 47

Patrones de diseo

Dr. Pedro Mejia Alvarez


CINVESTAV-IPN, Mexico

Origen de los Patrones


Arq. Cristopher Alexander, 70s Ward Cuningham y Kent Beck 1987 Erich Gamma, Richard Helm, Ralph Johonson y Hohn Vissides (el grupo de los cuatro) 1990/1994

Que es un patron?
Cada Patrn es una regla de tres partes, la cual expresa una relacin entre un cierto contexto, un problema y una solucin.

Alexander Christopher.

Caractersticas de los Patrones


Proporcionan Soluciones concretas Proporcionan soluciones tcnicas Se utilizan en situaciones frecuentes Favorece la reutilizacin de cdigo El uso de un patrn no se refleja en el cdigo Es difcil reutilizar la Implementacin de un patrn

Patrones

Los patrones reciclan ideas, no cdigo.

Clasificacin de Patrones

Segn su etapa de desarrollo Anlisis Arquitectura Diseo

Patrones de Diseo

Los patrones de diseo, ayudan a disear soluciones de software, definiendo comportamientos comunes que suelen encontrarse en distintos componentes de software

Clasificacin de patrones de diseo

Segn su propsito fundamentales creacin Descomposicin Estructurales Comportamiento Concurrencia

Patrones de Diseo
Descripcin de algunos de los patrones de diseo mas importantes.

Patrones Fundamentales
Patrones de diseo bsicos, ya que son muy usados para la representacin de otros patrones.

Delegacin - Delegation (1)


Indica cuando no usar herencia. Es una forma de extender la funcionalidad de una clase, pero no se desea tener una jerarqua del tipo es un.

Ejemplo de delegacin

Interfaz Interfaz (1)

Permite a una clase usar datos y servicios provistos por otras clases independientes proveyendo un acceso uniforme.

Interfaz Interfaz (2)

Inmutable - Inmutable

Evita que se modifique el estado de la clase.

Es un patrn fundamental de concurrencia.


Reduce el costo de los accesos concurrentes Evita la necesidad de sincronizar threads.

Proxy - Proxy (1)

Se requiere que las llamadas a mtodos de un objeto ocurran indirectamente a travs de un objeto sustituto del objeto original, delegando luego las llamadas a los mtodos de los objetos respectivos. El objeto proxy, comparte la misma interfaz o superclase que el objeto delegado.

Proxy - Proxy (2)

Patrones de creacin
Abstraen comportamientos referentes a la forma como se deben crear los objetos.

Fabrica Abstracta -Abstract Factory (1)

Proporciona un Interfaz para crear familias de objetos sin especificar su clase de forma concreta. Si deseamos que nuestro software funcione sobre distintos recursos debemos abstraer las libreras utilizadas proporcionando una Interfaz comn.

Fabrica Abstracta -Abstract Factory (2)

Singular - Singleton

Este patrn asegura que slo una instancia de la clase sea creada. Todos los objetos que usan una instancia de esa clase, usan la misma instancia.

Patrones de descomposicin
Los patrones de descomposicin proveen ayuda para descomponer actores y conceptos complejos en mltiples clases

Compuesto - Composite (1)


Tambin conocido como composicin recursiva. Permite construir objetos complejos mediante composicin recursiva de objetos similares, en forma de rbol. Tambin permite manipular consistentemente los objetos en el rbol, pidiendo que todos los objetos en el rbol tengan una superclase o interfaz comn.

Compuesto - Composite (2)

Ejemplo de Composite

Patrones Estructurales
describen las formas comunes en que distintos tipos de objetos pueden ser organizados para trabajar y colaborar entre ellos.

Adaptador - Adapter (1)

INTENCION Convierte la interfaz de una clase en otra ms compatible con nuestras necesidades.

CONOCIDO COMO Class Adapter, Object Adapter, Wrapper


MOTIVO Reduce la dependencia entre clases. APLICACIONES

Para utilizar la interfaz de una librera que no coincide con la que se requiere.
Para extender la funcionalidad de una librera existente.

Adaptador - Adapter (2)

PARTICIPANTES

Cliente Clase que hace uso de otras clases a travs de un interfaz que no se tiene por que corresponder con el implementado en dichas clases. InterfazObjetivo Clase que declara el interfaz al que llama la clase cliente. Adaptador Clase que implementa el enlace entre el interfaz desdeado (u objetivo) y el que realmente existe (ofrecido por la ClaseExistente) ClaseExistente Tambien llamada adaptada o adaptee, el la clase original de que se dispone.

Adaptador - Adapter (3)


Adaptador de Clase

Adaptador - Adapter (4)


Adaptador de Objeto

Iterador - Iterator (1)

INTENCION Permite acceder secuencialmente a los elementos de estructura de datos u objetos preservando su estructura interna. CONOCIDO COMO Iterator PARTICIPANTES

IIterator: Interfaz que define los mtodos de acceso a los elementos. Iterator: Clase que implementa el acceso secuencial. ICollection: Interfaz de la clase Collection. La clase Collection ofrece sus propios objetos Iterator especializados.

Iterador - Iterator (2)

Patrones de comportamiento
Se utilizan para administrar y combinar ciertos comportamientos.

Comando-Command (1)

Encapsula los comandos para permitir su administracin si se quere:


Ejecutar asncronamente. Definir secuencias de ejecucin Hacer y Deshacer.

Comando-Command (2)

Observador-Observer (1)

Genera dependencias entre obetos, para que un componente dado (modelo) pueda informar a otros (observadores) de que su estado ha cambiado.

Observador-Observer (2)

Patrones de procesos
Definen patrones para la definicin de procesos

Patrones de Procesos
Es un conjunto de tecnica, acciones y/o tareas (actividades) generales para desarrollar software orientado a objetos [Scott W. Ambler]. Los patrones de actividad, dentro de una organizacin (y dentro de un proyecto) es llamado un proceso. [Coplien]

Clasificacin de los Patrones de Procesos


Patrones de Procesos Tareas (Task process patterns). Define pasos detallados para realizar una tarea. Patrones de procesos de etapa (Stage process patterns). Pasos repetitivos para una simple etapa de desarrollo. Patrones de procesos de fases (phase process patterns). Define las interaccione sentre los patrones de etapas para una simple etapa de desarrollo.

Antipatrones
Definen patrones que no se deben seguir.

Antipatrones
Nos ofrecen una forma de resolver un problema tpico, documentando lo que no se debe hace. Nos hablan de actitudes o formas de enfrentarse a los problemas que ya sabemos suelen tener consecuencias negativas. Tambin reflejan experiencia, pero de este caso, de los errores cometidos.

Objetivos de los Antipatrones


Dar a conocer y clasificar los errores mas comunes a la hora de desarrollar software. Proponer un proceso para atacar esos problemas. Evitar que se repitan constantemente. Difundir la experiencia de otros desarrolladores.

Clasificacinde los Antipatrones


Desarrollo de Software Arquitectura de Software Gestion de Proyectos de Software

Antipatrones de Desarrollo de Software

The Blob (Clases Gigantes) Lava Flow (Cdigo Muerto). Functional Decomposition (Diseo no Orientado a Objetos) Poltergeists (No se sabe lo que hace alguna clase) Golden Hammer (Para un martillo todos son clavos) Spaghetti Code (Sobre anidamiento de IFs o SWITCHs) Cut-and-Paste Programming (Copiar y pega cdigo)

Antipatrones de Arquitectura de software.


Stovepipe Enterprise: Aislamiento en la empresa o desarrollo de sistmas aislados y parchados Stovepipe Systems: Sistemas que por su mala arquitectura se comportan como si sus componentes hubieran sido desarrollados por separado. Vendor Lock-In: Arquitectura dependiente del Producto. Architecture by implication: Arquitectura implcita. Design by Commite: El proyecto es diseado por un comit demasiado numerosos e inexperto. Reinvent the Whell: Desarrollo desde cero.

Antipatrones de Gestin de Proyectos de Software

Analysis paralysis: Sndrome del gran proyecto


Dirigido por una grn cantidad de personal muy inteligente. Se identifican con nombres de gran, 2000, mega, super, etc. Se pretende que el sistema lo haga todo Termina cuando el proyecto se cancela

Potrebbero piacerti anche