Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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.
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
Clasificacin de Patrones
Patrones de Diseo
Los patrones de diseo, ayudan a disear soluciones de software, definiendo comportamientos comunes que suelen encontrarse en distintos componentes de software
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.
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
Permite a una clase usar datos y servicios provistos por otras clases independientes proveyendo un acceso uniforme.
Inmutable - Inmutable
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.
Patrones de creacin
Abstraen comportamientos referentes a la forma como se deben crear los objetos.
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.
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
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.
Ejemplo de Composite
Patrones Estructurales
describen las formas comunes en que distintos tipos de objetos pueden ser organizados para trabajar y colaborar entre ellos.
INTENCION Convierte la interfaz de una clase en otra ms compatible con nuestras necesidades.
Para utilizar la interfaz de una librera que no coincide con la que se requiere.
Para extender la funcionalidad de una librera existente.
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.
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.
Patrones de comportamiento
Se utilizan para administrar y combinar ciertos comportamientos.
Comando-Command (1)
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]
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.
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)
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.