SlideShare una empresa de Scribd logo
1 de 29
Patrones de diseño
Joan Sebastián Ramírez Pérez
2016
1
Agenda
¿Qué son patrones de diseño?
Patrones POSA
Patrones GOF
Bibliografía
2
¿Qué son patrones de
diseño?
3
“Cada patrón describe un problema que ocurre
una y otra vez en nuestro medio ambiente y, a
continuación describe el núcleo de la solución a
ese problema, de tal manera que se puede
utilizar esta solución un millón de veces, sin
tener que hacerlo de la misma manera dos
veces”
1977, A Pattern Language, Christopher Alexander
4
“ Un patrón es principalmente una forma de
masticar consejos sobre un tema”
– Martin Fowler
“Un patrón describe un problema de diseño
recurrente, que surge en contextos específicos
de diseño, y presenta un esquema genérico
probado para la solución de este.
El esquema de la solución describe un conjunto
de componentes, responsabilidades y
relaciones entre de éstos, y formas en que
dichos componentes colaboran entre sí.”
– Buschmann
¿Qué es un patrón de software?
Solución probada a un problema recurrente.
Solución reutilizable a un problema común en
un contexto dado.
Consideraciones importantes
Un patrón de diseño no es un silver bullet.
Un patrón de diseño no depende de un
lenguaje de programación.
El patrón de diseño en si es la solución, no el
problema.
¿Por qué usar patrones de
diseño?• Vocabulario y entendimiento común para el diseño de
software.
• Suministra alternativas de diseño para tener un software
flexible y reutilizable.
• Construir arquitecturas de software complejas y
heterogéneas.
• Favorece la vida y mantenibilidad del software desarrollado.
¿Cuando debo usar un patrón de
diseño?
Cuando tengo el mismo problema al cual
responde el patrón.
Cuando conozco el efecto colateral que
conlleva el patrón de diseño y es viable la
aparición de este efecto.
Patrones POSA (Pattern
Oriented Software Architecture)
11
Objetivos patrones POSA
Presentar y dar el esquema de arquitectura
de software orientada a patrones (Pattern
Oriented Software Architecture)
Mostrar un lenguaje de patrones que facilitará
el diseño de la arquitectura de software a
partir de los diferentes patrones.
Estructura patrones POSA
El volumen 1 de POSA se enfoca a los patrones fundamentales de
arquitectura de software
El volumen 2 de POSA se enfoca a la arquitectura del software para
manejo de concurrencia y de gestión con la red
El volumen 3 de POSA se enfoca a patrones para la arquitectura de
recursos de computación
El volumen 4 de POSA conjunta los patrones de cómputo distribuido y
conocidos por la comunidad (incluyendo GoF, PEAA, EIP)
El volumen 5 de POSA se enfoca a tratar un modelo para definir
lenguajes de patrones
Distribución POSA
Del fango a la estructura
- Capas
- Tubería-filtros
- Pizarra
Sistemas distribuidos
- Broker (p. ej. CORBA, DCOM, Web
Services, WWW)
Sistemas interactivos
- Model-View-Controller - Presentation-
Abstraction-Control
Categoría patrones POSA
Patrones de Arquitectura: Layers, MVC, EDA,
etc.
Patrones de Diseño: Factory Method, Façade,
Strategy, Observer, etc.
Idioms/Modismos: Manejo de memoria, uso
del lenguaje, convenciones de nombrado, etc.
Patrón Layers (Capas)
Problema:
Diseñar un sistema cuya característica dominante sea una mezcla de problemas
de alto nivel y de bajo nivel
El flujo de comunicación consta de peticiones que van del nivel más superior al
nivel inferior, y las respuestas en sentido inverso
Contexto:
Una aplicación grande que requiere descomposición
Solución:
Estructurar aplicaciones que puedan ser descompuestas en grupos de subtareas,
en las que cada grupo de subtareas está en un nivel particular de abstracción
Participantes patrón Layers
Patrón Broker (Mediador)
Patrón para estructurar sistemas distribuidos
usando el desacoplamiento de componentes y
que interactúan entre ellos a través de invocación
a servicios remotos. El mediador coordina la
comunicación de solicitudes del cliente al servidor
y coordina el retorno del resultado del servidor al
cliente, procurando la transparencia en el formato
de datos y el protocolo de transporte.
Ejemplo Broker
Modelo-Vista-Controlador
MVC es un patrón de diseño orientado a objetos.
Divide una aplicación de software dado en tres partes
interconectadas.
Especifica el uso de clases para dividir nuestra aplicación:
Lógica del negocio -> datos persistentes
Lógica de presentación -> como visualizamos los datos
Flujo de la aplicación -> a través del controlador
Patrones GOF
21
Clasificación de los patrones GOF
• Propósito
• Refleja lo que hace un patrón
• Se divide en Patrones de Creación , Estructura y
Comportamiento
• Alcance
• Especifica si el patrón se aplica principalmente a clases u
objetos
• Patrones de Clase y de Objeto
Clasificación patrones GOF
Patrones creacionales• Factory Method
Crea una instancia de varias clases derivadas
• Abstract Factory
Crea una instancia de varias familias de clases
• Builder
Separa la construcción de un objeto de su representación
• Prototype
Genera una instancia y la inicializa, que puede ser copiada o clonada.
• Singleton
Una clase de la cual solo puede existir una única instancia
Patrones de estructura
• Adapter: relaciona interfaces de diferentes clases.
• Bridge: separa la interfaz de un objeto de su implementación.
• Composite: una estructura de árbol de objetos simples y
compuestos.
• Decorator: añadir responsabilidades a los objetos dinámicamente.
• Facade: una única clase que representa todo un subsistema.
• Flyweight: una instancia usada para compartir de manera eficiente.
• Proxy: un objeto que representa a otro objeto.
Patrones de comportamiento
• Chain of responsability: una manera de pasar una petición a
una cadena de objetos.
• Command: encapsula una petición de comandos como un
objeto.
• Interpreter: una manera de incluir elementos del lenguaje en
un programa.
• Iterator: acceso secuencial a los elementos de una colección
• Mediator: define una comunicación simplificada entre clases
Patrones de comportamiento
• Memento: captura y restaura el estado interno de un objeto.
• Observer: una forma de notificar cambios a varias clases.
• State: altera el comportamiento de un objeto cuando cambia de
estado.
• Strategy: encapsula un algoritmo dentro de una clase.
• Template method: difiere los pasos exactos de un algoritmos a
una subclase.
• Visitor: define una nueva operación a una clase sin cambiarla.
Bibliografía
28
Bibliografía
• Gamma, Erich; Helm, Richard; Johnson, Ralph; Vlissides,
John(1995). Design Patterns: Elements of Reusable Object-
Oriented Software. Reading, Massachusetts: Addison Wesley
Longman, Inc.
• Larman, C.: UML y Patrones: Introducción al análisis y diseño
orientado a objetos, 2 ed. Prentice Hall. 2005.
•Buschmann, Frank et al.: Pattern Oriented Software
Architecture, Volume 1: A System of Patterns, Willey & Sons,
1996.

Más contenido relacionado

La actualidad más candente

Arquitecturas de software - Parte 1
Arquitecturas de software - Parte 1Arquitecturas de software - Parte 1
Arquitecturas de software - Parte 1Marta Silvia Tabares
 
Cuadro comparativo de los modelos de proceso del software (1)
Cuadro comparativo  de los modelos de proceso del software (1)Cuadro comparativo  de los modelos de proceso del software (1)
Cuadro comparativo de los modelos de proceso del software (1)Erik Emanuel Amador Saldaña
 
2 1 vistas arquitectonicas
2 1 vistas arquitectonicas2 1 vistas arquitectonicas
2 1 vistas arquitectonicaslandeta_p
 
Ingeniería de requisitos y la ingeniería de requerimientos
Ingeniería de requisitos y la ingeniería de requerimientos Ingeniería de requisitos y la ingeniería de requerimientos
Ingeniería de requisitos y la ingeniería de requerimientos unrated999
 
Especificación de Arquitectura de Software
Especificación de Arquitectura de SoftwareEspecificación de Arquitectura de Software
Especificación de Arquitectura de SoftwareSoftware Guru
 
Modelo Orientado A Objetos
Modelo Orientado A ObjetosModelo Orientado A Objetos
Modelo Orientado A Objetosjose_rob
 
Cuadro comparativo Modelos de Software.
Cuadro comparativo Modelos de Software.Cuadro comparativo Modelos de Software.
Cuadro comparativo Modelos de Software.templarioo
 
Fundamentos de la arquitectura de software
Fundamentos de la arquitectura de softwareFundamentos de la arquitectura de software
Fundamentos de la arquitectura de softwareRoger Villegas
 
25 Estandares - IEEE Calidad de Software
25 Estandares - IEEE Calidad de Software25 Estandares - IEEE Calidad de Software
25 Estandares - IEEE Calidad de SoftwareCamila Arbelaez
 
MODELO COCOMO (INGENIERA DE SOFTWARE)
MODELO COCOMO (INGENIERA DE SOFTWARE)MODELO COCOMO (INGENIERA DE SOFTWARE)
MODELO COCOMO (INGENIERA DE SOFTWARE)Yadith Miranda Silva
 
Caracteristicas de los Sistemas Distribuidos
Caracteristicas de los Sistemas DistribuidosCaracteristicas de los Sistemas Distribuidos
Caracteristicas de los Sistemas DistribuidosJorge Guerra
 
Vistas Arquitectonicas Ingenieria de Software
Vistas Arquitectonicas Ingenieria de SoftwareVistas Arquitectonicas Ingenieria de Software
Vistas Arquitectonicas Ingenieria de SoftwareRoberth Loaiza
 

La actualidad más candente (20)

Arquitectura del software
Arquitectura del softwareArquitectura del software
Arquitectura del software
 
Arquitecturas de software - Parte 1
Arquitecturas de software - Parte 1Arquitecturas de software - Parte 1
Arquitecturas de software - Parte 1
 
Cuadro comparativo de los modelos de proceso del software (1)
Cuadro comparativo  de los modelos de proceso del software (1)Cuadro comparativo  de los modelos de proceso del software (1)
Cuadro comparativo de los modelos de proceso del software (1)
 
2 1 vistas arquitectonicas
2 1 vistas arquitectonicas2 1 vistas arquitectonicas
2 1 vistas arquitectonicas
 
Ingeniería de requisitos y la ingeniería de requerimientos
Ingeniería de requisitos y la ingeniería de requerimientos Ingeniería de requisitos y la ingeniería de requerimientos
Ingeniería de requisitos y la ingeniería de requerimientos
 
Estimación Software por Puntos de Función
Estimación Software por Puntos de FunciónEstimación Software por Puntos de Función
Estimación Software por Puntos de Función
 
GESTIÓN DE LA CONFIGURACIÓN DEL SOFTWARE (GCS)
GESTIÓN DE LA CONFIGURACIÓN DEL SOFTWARE (GCS)GESTIÓN DE LA CONFIGURACIÓN DEL SOFTWARE (GCS)
GESTIÓN DE LA CONFIGURACIÓN DEL SOFTWARE (GCS)
 
Especificación de Arquitectura de Software
Especificación de Arquitectura de SoftwareEspecificación de Arquitectura de Software
Especificación de Arquitectura de Software
 
Modelo Orientado A Objetos
Modelo Orientado A ObjetosModelo Orientado A Objetos
Modelo Orientado A Objetos
 
Diseño arquitectónico
Diseño arquitectónicoDiseño arquitectónico
Diseño arquitectónico
 
Cuadro comparativo Modelos de Software.
Cuadro comparativo Modelos de Software.Cuadro comparativo Modelos de Software.
Cuadro comparativo Modelos de Software.
 
Principios diseño del software
Principios diseño del software Principios diseño del software
Principios diseño del software
 
Fundamentos de la arquitectura de software
Fundamentos de la arquitectura de softwareFundamentos de la arquitectura de software
Fundamentos de la arquitectura de software
 
25 Estandares - IEEE Calidad de Software
25 Estandares - IEEE Calidad de Software25 Estandares - IEEE Calidad de Software
25 Estandares - IEEE Calidad de Software
 
PRESENTACIÓN RUP
PRESENTACIÓN RUPPRESENTACIÓN RUP
PRESENTACIÓN RUP
 
MVC
MVCMVC
MVC
 
MODELO COCOMO (INGENIERA DE SOFTWARE)
MODELO COCOMO (INGENIERA DE SOFTWARE)MODELO COCOMO (INGENIERA DE SOFTWARE)
MODELO COCOMO (INGENIERA DE SOFTWARE)
 
Metodología ICONIX
Metodología ICONIXMetodología ICONIX
Metodología ICONIX
 
Caracteristicas de los Sistemas Distribuidos
Caracteristicas de los Sistemas DistribuidosCaracteristicas de los Sistemas Distribuidos
Caracteristicas de los Sistemas Distribuidos
 
Vistas Arquitectonicas Ingenieria de Software
Vistas Arquitectonicas Ingenieria de SoftwareVistas Arquitectonicas Ingenieria de Software
Vistas Arquitectonicas Ingenieria de Software
 

Destacado

1 3 ingenieria software y patrones de diseño
1 3 ingenieria software y patrones de diseño1 3 ingenieria software y patrones de diseño
1 3 ingenieria software y patrones de diseñolandeta_p
 
Patrones Arquitecturales: Pipes & Filters
Patrones Arquitecturales: Pipes & FiltersPatrones Arquitecturales: Pipes & Filters
Patrones Arquitecturales: Pipes & FiltersNacho Bongiovanni
 
Patrones de arquitectura Software(Capa de Datos)
Patrones de arquitectura Software(Capa de Datos)Patrones de arquitectura Software(Capa de Datos)
Patrones de arquitectura Software(Capa de Datos)josecuartas
 
Patrones para Arquitectura de Información y ejemplos
Patrones para Arquitectura de Información y ejemplosPatrones para Arquitectura de Información y ejemplos
Patrones para Arquitectura de Información y ejemplosMauricio Angulo
 
Manual estacionamiento
Manual estacionamientoManual estacionamiento
Manual estacionamientocureno525
 
Patrones de diseño de software
Patrones de diseño de softwarePatrones de diseño de software
Patrones de diseño de softwareIker Canarias
 
Estilo arquitectonico
Estilo arquitectonicoEstilo arquitectonico
Estilo arquitectonicodamelis888
 
Arquitectura sistema
Arquitectura sistemaArquitectura sistema
Arquitectura sistemaOscar Eduardo
 
Mapa tegucigalpa, zonificacion 2008
Mapa tegucigalpa, zonificacion 2008Mapa tegucigalpa, zonificacion 2008
Mapa tegucigalpa, zonificacion 2008Gabriel Rojas
 
Conférence Silicon Salad : "Back office : la face cachée du e-commerce "
Conférence Silicon Salad : "Back office : la face cachée du e-commerce "Conférence Silicon Salad : "Back office : la face cachée du e-commerce "
Conférence Silicon Salad : "Back office : la face cachée du e-commerce "Silicon Salad
 

Destacado (20)

Patrones de diseño
Patrones de diseñoPatrones de diseño
Patrones de diseño
 
Patron de Arquitectura Broker
Patron de Arquitectura BrokerPatron de Arquitectura Broker
Patron de Arquitectura Broker
 
1 3 ingenieria software y patrones de diseño
1 3 ingenieria software y patrones de diseño1 3 ingenieria software y patrones de diseño
1 3 ingenieria software y patrones de diseño
 
Patrones Arquitecturales: Pipes & Filters
Patrones Arquitecturales: Pipes & FiltersPatrones Arquitecturales: Pipes & Filters
Patrones Arquitecturales: Pipes & Filters
 
Patrones de arquitectura Software(Capa de Datos)
Patrones de arquitectura Software(Capa de Datos)Patrones de arquitectura Software(Capa de Datos)
Patrones de arquitectura Software(Capa de Datos)
 
Servicios web
Servicios webServicios web
Servicios web
 
Patrones para Arquitectura de Información y ejemplos
Patrones para Arquitectura de Información y ejemplosPatrones para Arquitectura de Información y ejemplos
Patrones para Arquitectura de Información y ejemplos
 
Manual estacionamiento
Manual estacionamientoManual estacionamiento
Manual estacionamiento
 
Patrones de diseño de software
Patrones de diseño de softwarePatrones de diseño de software
Patrones de diseño de software
 
Gestion de it : un enfoque centrado en arquitecturas
Gestion de it : un enfoque centrado en arquitecturasGestion de it : un enfoque centrado en arquitecturas
Gestion de it : un enfoque centrado en arquitecturas
 
Gestión de IT: Un enfoque centrado en Arquitecturas
Gestión de IT: Un enfoque centrado en Arquitecturas Gestión de IT: Un enfoque centrado en Arquitecturas
Gestión de IT: Un enfoque centrado en Arquitecturas
 
Lenguaje de patrones c. alexander
Lenguaje de patrones c. alexanderLenguaje de patrones c. alexander
Lenguaje de patrones c. alexander
 
Prepartido
PrepartidoPrepartido
Prepartido
 
Estilo arquitectonico
Estilo arquitectonicoEstilo arquitectonico
Estilo arquitectonico
 
Control de versiones
Control de versionesControl de versiones
Control de versiones
 
Arquitectura sistema
Arquitectura sistemaArquitectura sistema
Arquitectura sistema
 
Mapa tegucigalpa, zonificacion 2008
Mapa tegucigalpa, zonificacion 2008Mapa tegucigalpa, zonificacion 2008
Mapa tegucigalpa, zonificacion 2008
 
Código Limpio
Código LimpioCódigo Limpio
Código Limpio
 
Clase ii patrones de diseño
Clase ii patrones de diseñoClase ii patrones de diseño
Clase ii patrones de diseño
 
Conférence Silicon Salad : "Back office : la face cachée du e-commerce "
Conférence Silicon Salad : "Back office : la face cachée du e-commerce "Conférence Silicon Salad : "Back office : la face cachée du e-commerce "
Conférence Silicon Salad : "Back office : la face cachée du e-commerce "
 

Similar a Patrones diseño y arquitectura

Similar a Patrones diseño y arquitectura (20)

Semana 1 Patrones de Diseño
Semana 1   Patrones de DiseñoSemana 1   Patrones de Diseño
Semana 1 Patrones de Diseño
 
Desarrollo de software
Desarrollo de softwareDesarrollo de software
Desarrollo de software
 
Patrones de diseño - Andrés Dorado
Patrones de diseño - Andrés DoradoPatrones de diseño - Andrés Dorado
Patrones de diseño - Andrés Dorado
 
Arquitectura aplicaciones Patrones de diseño
Arquitectura aplicaciones Patrones de diseñoArquitectura aplicaciones Patrones de diseño
Arquitectura aplicaciones Patrones de diseño
 
6070_TRECALDE_00288.ppt
6070_TRECALDE_00288.ppt6070_TRECALDE_00288.ppt
6070_TRECALDE_00288.ppt
 
Comunidad emagister 63082_63082-convertido
Comunidad emagister 63082_63082-convertidoComunidad emagister 63082_63082-convertido
Comunidad emagister 63082_63082-convertido
 
Patrones de Diseño
Patrones de DiseñoPatrones de Diseño
Patrones de Diseño
 
chuy
chuy chuy
chuy
 
Patrones de-diseño-mañana
Patrones de-diseño-mañanaPatrones de-diseño-mañana
Patrones de-diseño-mañana
 
Diseno Software
Diseno SoftwareDiseno Software
Diseno Software
 
Catalogo de patrones 0
Catalogo de patrones 0Catalogo de patrones 0
Catalogo de patrones 0
 
Framework
FrameworkFramework
Framework
 
Desarrollo basado en patrones
Desarrollo basado en patronesDesarrollo basado en patrones
Desarrollo basado en patrones
 
Patrones de diseño - Daniel E. Jaramillo
Patrones de diseño - Daniel E. JaramilloPatrones de diseño - Daniel E. Jaramillo
Patrones de diseño - Daniel E. Jaramillo
 
Fr amework
Fr ameworkFr amework
Fr amework
 
patronesdiseño2009.ppt
patronesdiseño2009.pptpatronesdiseño2009.ppt
patronesdiseño2009.ppt
 
Patrones de diseño I
Patrones de diseño IPatrones de diseño I
Patrones de diseño I
 
MVC.ppt
MVC.pptMVC.ppt
MVC.ppt
 
Introducción Patrones de Diseño
Introducción Patrones de DiseñoIntroducción Patrones de Diseño
Introducción Patrones de Diseño
 
12-150203140754-conversion-gate02.pptx
12-150203140754-conversion-gate02.pptx12-150203140754-conversion-gate02.pptx
12-150203140754-conversion-gate02.pptx
 

Más de Joan Sebastián Ramírez Pérez (20)

Clean architecture
Clean architectureClean architecture
Clean architecture
 
Practicas tecnicas
Practicas tecnicasPracticas tecnicas
Practicas tecnicas
 
Bddtddatdd
BddtddatddBddtddatdd
Bddtddatdd
 
Pruebas automaticas
Pruebas automaticasPruebas automaticas
Pruebas automaticas
 
Orm
OrmOrm
Orm
 
La nube. Cloud computting
La nube. Cloud computtingLa nube. Cloud computting
La nube. Cloud computting
 
Microservicios
MicroserviciosMicroservicios
Microservicios
 
Ciclo devida
Ciclo devidaCiclo devida
Ciclo devida
 
Practicas técnicas
Practicas técnicasPracticas técnicas
Practicas técnicas
 
Roles scrum
Roles scrumRoles scrum
Roles scrum
 
Lean startup
Lean startupLean startup
Lean startup
 
Principios SOLID
Principios SOLIDPrincipios SOLID
Principios SOLID
 
Código Limpio
Código LimpioCódigo Limpio
Código Limpio
 
Modelo diseño
Modelo diseñoModelo diseño
Modelo diseño
 
Roles desarrollo del software
Roles desarrollo del softwareRoles desarrollo del software
Roles desarrollo del software
 
Refactor y deuda técnica
Refactor y deuda técnicaRefactor y deuda técnica
Refactor y deuda técnica
 
Diagramas comportamiento
Diagramas comportamientoDiagramas comportamiento
Diagramas comportamiento
 
Pruebas automaticas
Pruebas automaticasPruebas automaticas
Pruebas automaticas
 
Patrones GOF
Patrones GOFPatrones GOF
Patrones GOF
 
Calidad en el desarrollo del software
Calidad en el desarrollo del softwareCalidad en el desarrollo del software
Calidad en el desarrollo del software
 

Patrones diseño y arquitectura

  • 1. Patrones de diseño Joan Sebastián Ramírez Pérez 2016 1
  • 2. Agenda ¿Qué son patrones de diseño? Patrones POSA Patrones GOF Bibliografía 2
  • 3. ¿Qué son patrones de diseño? 3
  • 4. “Cada patrón describe un problema que ocurre una y otra vez en nuestro medio ambiente y, a continuación describe el núcleo de la solución a ese problema, de tal manera que se puede utilizar esta solución un millón de veces, sin tener que hacerlo de la misma manera dos veces” 1977, A Pattern Language, Christopher Alexander 4
  • 5. “ Un patrón es principalmente una forma de masticar consejos sobre un tema” – Martin Fowler
  • 6. “Un patrón describe un problema de diseño recurrente, que surge en contextos específicos de diseño, y presenta un esquema genérico probado para la solución de este. El esquema de la solución describe un conjunto de componentes, responsabilidades y relaciones entre de éstos, y formas en que dichos componentes colaboran entre sí.” – Buschmann
  • 7. ¿Qué es un patrón de software? Solución probada a un problema recurrente. Solución reutilizable a un problema común en un contexto dado.
  • 8. Consideraciones importantes Un patrón de diseño no es un silver bullet. Un patrón de diseño no depende de un lenguaje de programación. El patrón de diseño en si es la solución, no el problema.
  • 9. ¿Por qué usar patrones de diseño?• Vocabulario y entendimiento común para el diseño de software. • Suministra alternativas de diseño para tener un software flexible y reutilizable. • Construir arquitecturas de software complejas y heterogéneas. • Favorece la vida y mantenibilidad del software desarrollado.
  • 10. ¿Cuando debo usar un patrón de diseño? Cuando tengo el mismo problema al cual responde el patrón. Cuando conozco el efecto colateral que conlleva el patrón de diseño y es viable la aparición de este efecto.
  • 11. Patrones POSA (Pattern Oriented Software Architecture) 11
  • 12. Objetivos patrones POSA Presentar y dar el esquema de arquitectura de software orientada a patrones (Pattern Oriented Software Architecture) Mostrar un lenguaje de patrones que facilitará el diseño de la arquitectura de software a partir de los diferentes patrones.
  • 13. Estructura patrones POSA El volumen 1 de POSA se enfoca a los patrones fundamentales de arquitectura de software El volumen 2 de POSA se enfoca a la arquitectura del software para manejo de concurrencia y de gestión con la red El volumen 3 de POSA se enfoca a patrones para la arquitectura de recursos de computación El volumen 4 de POSA conjunta los patrones de cómputo distribuido y conocidos por la comunidad (incluyendo GoF, PEAA, EIP) El volumen 5 de POSA se enfoca a tratar un modelo para definir lenguajes de patrones
  • 14. Distribución POSA Del fango a la estructura - Capas - Tubería-filtros - Pizarra Sistemas distribuidos - Broker (p. ej. CORBA, DCOM, Web Services, WWW) Sistemas interactivos - Model-View-Controller - Presentation- Abstraction-Control
  • 15. Categoría patrones POSA Patrones de Arquitectura: Layers, MVC, EDA, etc. Patrones de Diseño: Factory Method, Façade, Strategy, Observer, etc. Idioms/Modismos: Manejo de memoria, uso del lenguaje, convenciones de nombrado, etc.
  • 16. Patrón Layers (Capas) Problema: Diseñar un sistema cuya característica dominante sea una mezcla de problemas de alto nivel y de bajo nivel El flujo de comunicación consta de peticiones que van del nivel más superior al nivel inferior, y las respuestas en sentido inverso Contexto: Una aplicación grande que requiere descomposición Solución: Estructurar aplicaciones que puedan ser descompuestas en grupos de subtareas, en las que cada grupo de subtareas está en un nivel particular de abstracción
  • 18. Patrón Broker (Mediador) Patrón para estructurar sistemas distribuidos usando el desacoplamiento de componentes y que interactúan entre ellos a través de invocación a servicios remotos. El mediador coordina la comunicación de solicitudes del cliente al servidor y coordina el retorno del resultado del servidor al cliente, procurando la transparencia en el formato de datos y el protocolo de transporte.
  • 20. Modelo-Vista-Controlador MVC es un patrón de diseño orientado a objetos. Divide una aplicación de software dado en tres partes interconectadas. Especifica el uso de clases para dividir nuestra aplicación: Lógica del negocio -> datos persistentes Lógica de presentación -> como visualizamos los datos Flujo de la aplicación -> a través del controlador
  • 22. Clasificación de los patrones GOF • Propósito • Refleja lo que hace un patrón • Se divide en Patrones de Creación , Estructura y Comportamiento • Alcance • Especifica si el patrón se aplica principalmente a clases u objetos • Patrones de Clase y de Objeto
  • 24. Patrones creacionales• Factory Method Crea una instancia de varias clases derivadas • Abstract Factory Crea una instancia de varias familias de clases • Builder Separa la construcción de un objeto de su representación • Prototype Genera una instancia y la inicializa, que puede ser copiada o clonada. • Singleton Una clase de la cual solo puede existir una única instancia
  • 25. Patrones de estructura • Adapter: relaciona interfaces de diferentes clases. • Bridge: separa la interfaz de un objeto de su implementación. • Composite: una estructura de árbol de objetos simples y compuestos. • Decorator: añadir responsabilidades a los objetos dinámicamente. • Facade: una única clase que representa todo un subsistema. • Flyweight: una instancia usada para compartir de manera eficiente. • Proxy: un objeto que representa a otro objeto.
  • 26. Patrones de comportamiento • Chain of responsability: una manera de pasar una petición a una cadena de objetos. • Command: encapsula una petición de comandos como un objeto. • Interpreter: una manera de incluir elementos del lenguaje en un programa. • Iterator: acceso secuencial a los elementos de una colección • Mediator: define una comunicación simplificada entre clases
  • 27. Patrones de comportamiento • Memento: captura y restaura el estado interno de un objeto. • Observer: una forma de notificar cambios a varias clases. • State: altera el comportamiento de un objeto cuando cambia de estado. • Strategy: encapsula un algoritmo dentro de una clase. • Template method: difiere los pasos exactos de un algoritmos a una subclase. • Visitor: define una nueva operación a una clase sin cambiarla.
  • 29. Bibliografía • Gamma, Erich; Helm, Richard; Johnson, Ralph; Vlissides, John(1995). Design Patterns: Elements of Reusable Object- Oriented Software. Reading, Massachusetts: Addison Wesley Longman, Inc. • Larman, C.: UML y Patrones: Introducción al análisis y diseño orientado a objetos, 2 ed. Prentice Hall. 2005. •Buschmann, Frank et al.: Pattern Oriented Software Architecture, Volume 1: A System of Patterns, Willey & Sons, 1996.