patrones de diseño - kybele.etsii.urjc.es · patrones es una solución reusable de problemas...

34
Patrones

Upload: phamhanh

Post on 21-Sep-2018

230 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Patrones de Diseño - kybele.etsii.urjc.es · Patrones Es una solución reusable de problemas comunes. Los patrones solucionan problemas que existen en muchos niveles de abstracción

Patrones

Page 2: Patrones de Diseño - kybele.etsii.urjc.es · Patrones Es una solución reusable de problemas comunes. Los patrones solucionan problemas que existen en muchos niveles de abstracción

Patrones

Es una solución reusable de problemas comunes.

Los patrones solucionan problemas que existen en

muchos niveles de abstracción.

desde el análisis hasta el diseño y desde la

arquitectura hasta la implementación.

Es una solución a un problema de diseño no trivial

que es efectiva y reusable: a) ya ha resuelto un

problema similar anteriormente de manera

satisfactoria b) se puede aplicar a muchos

problemas de diseño en diferentes circunstancias.

Page 3: Patrones de Diseño - kybele.etsii.urjc.es · Patrones Es una solución reusable de problemas comunes. Los patrones solucionan problemas que existen en muchos niveles de abstracción

Patrones de Alto nivel: Patrones de Arquitectura

Patrones de nivel medio: Patrones de Diseño

Patrones de bajo nivel: Idioms

Page 4: Patrones de Diseño - kybele.etsii.urjc.es · Patrones Es una solución reusable de problemas comunes. Los patrones solucionan problemas que existen en muchos niveles de abstracción

Patrones de Arquitectura

Page 5: Patrones de Diseño - kybele.etsii.urjc.es · Patrones Es una solución reusable de problemas comunes. Los patrones solucionan problemas que existen en muchos niveles de abstracción

Son formas predefinidas de resolver problemas

de aquitectura.

La arquitectura de un sistema de software casi

nunca se limita a un solo patron o estilo de se

arquitectura.

Page 6: Patrones de Diseño - kybele.etsii.urjc.es · Patrones Es una solución reusable de problemas comunes. Los patrones solucionan problemas que existen en muchos niveles de abstracción

Estilos Arquitectónicos

Categorías Estilos

Comunicación SOA (Service Oriented Architecture)

Bus de Mensajes

Distribución Cliente/Servidor

3-Capas

N-Capas

Estructura Basado en Componentes

Orientado a Objetos

Arquitectura de Capas

Otras Dirigido por eventos

Modelo-Vista-Controlador

Page 7: Patrones de Diseño - kybele.etsii.urjc.es · Patrones Es una solución reusable de problemas comunes. Los patrones solucionan problemas que existen en muchos niveles de abstracción

Patrones de Comunicación: SOA

Esta arquitectura permite que la funcionalidad de la aplicación se provea combinando un conjunto de Servicios.

Los servicios son débilmente acoplados ya que se basan en interfaces estándar que se pueden invocar publicar y describir.

Se basan en un esquema de interacción con mensajes a través de sus interfaces según el esquema de definición.

El estilo SOA permite empaquetar los proceso de negocios dentro de servicios interoperables, usando un amplio rango de protocolos y de formatos de datos para comunicar la información.

Page 8: Patrones de Diseño - kybele.etsii.urjc.es · Patrones Es una solución reusable de problemas comunes. Los patrones solucionan problemas que existen en muchos niveles de abstracción

XML

HTTP

WSDL

SOAP

REST

Serialización de Objetos

Page 9: Patrones de Diseño - kybele.etsii.urjc.es · Patrones Es una solución reusable de problemas comunes. Los patrones solucionan problemas que existen en muchos niveles de abstracción

Patrones de Comunicación: Bus de

Mensajes (Message Bus)

Es un estilo para diseñar aplicaciones donde la

interacción entre aplicaciones se realiza por

pase de mensajes (usualmente asincrónicos)

sobre un bus común.

Oracle Service Bus.

IBM WebSphere MQ.

Message Queue Server

Page 10: Patrones de Diseño - kybele.etsii.urjc.es · Patrones Es una solución reusable de problemas comunes. Los patrones solucionan problemas que existen en muchos niveles de abstracción

Patrones de Distribución: Cliente/Servidor

Describe un sistema distribuido que consta de

un cliente, un sistema servidor, y una red de

comunicación. (2-tier)

El servidor es accedido por múltiples clientes.

Generalmente, una aplicación de IUG que se

comunica con el servidor de base de datos que

contiene la lógica de negocio en forma de

procedimientos almacenados.

Page 11: Patrones de Diseño - kybele.etsii.urjc.es · Patrones Es una solución reusable de problemas comunes. Los patrones solucionan problemas que existen en muchos niveles de abstracción

Patrones de Distribución: N-Tier / 3-Tier

Es un estilo que describe la separación de la

funcionalidad de la misma manera que el estilo

de capas pero cada segmento de capa puede ser

localizado en una computadora físicamente

separada.

Las N-tier se caracterizan por la descomposición

funcional de aplicaciones, componentes de

servicios, lo que provee escalabilidad,

disponibilidad, manejabilidad, mantenibilidad y

reutilización.

Cada capa es independiente de las demás.

Page 12: Patrones de Diseño - kybele.etsii.urjc.es · Patrones Es una solución reusable de problemas comunes. Los patrones solucionan problemas que existen en muchos niveles de abstracción

Cliente

Navegador

Presentación

Servidor Web

Lógica de NegocioMiddleware

Aministración de Recursos

Page 13: Patrones de Diseño - kybele.etsii.urjc.es · Patrones Es una solución reusable de problemas comunes. Los patrones solucionan problemas que existen en muchos niveles de abstracción

Tecnología .Net

Page 14: Patrones de Diseño - kybele.etsii.urjc.es · Patrones Es una solución reusable de problemas comunes. Los patrones solucionan problemas que existen en muchos niveles de abstracción

Tecnología J2EE

Page 15: Patrones de Diseño - kybele.etsii.urjc.es · Patrones Es una solución reusable de problemas comunes. Los patrones solucionan problemas que existen en muchos niveles de abstracción

Patrones de Estructura: Basado en

Componentes

Esta arquitectura describe un enfoque basado

en la descomposición del diseño en

componentes funcionales o lógicos que

exponen interfaces de comunicación que

contienen métodos eventos y propiedades

Es un nivel de abstracción más alto que el

principio orientado a objeto.

Un componente es un paquete, un servicio web,

o un módulo.

Page 16: Patrones de Diseño - kybele.etsii.urjc.es · Patrones Es una solución reusable de problemas comunes. Los patrones solucionan problemas que existen en muchos niveles de abstracción

Patrones de Estructura: Diseño Dirigido por

Dominio

Es un estilo orientado a objeto que se enfoca en

el modelado del dominio del negocio y en la

definición de las entidades el negocio dentro del

dominio.

El modelo de dominio es el núcleo del sistema.

Page 17: Patrones de Diseño - kybele.etsii.urjc.es · Patrones Es una solución reusable de problemas comunes. Los patrones solucionan problemas que existen en muchos niveles de abstracción

Patrones de Estructura: Arquitectura de

Capas

Se enfoca en el agrupamiento de la

funcionalidad de la aplicación en distintas capas

ubicadas una sobre la otra.

La funcionalidad de cada capa está relacionada

a un mismo rol o responsabilidad común.

L acomunicación entre caps es explícita y

débilmente acoplada.

Las capas pueden residir en la misma

computadora física

Page 18: Patrones de Diseño - kybele.etsii.urjc.es · Patrones Es una solución reusable de problemas comunes. Los patrones solucionan problemas que existen en muchos niveles de abstracción

Arquitectura Dirigida por eventos

Consiste en el diseño e implementación de

aplicaciones que transmiten eventos entre

componentes de SW débilmente acoplados y

servicios

Consiste en emisores o agentes y consumidores

de eventos, que tienen la responsabilidad de

reaccionar a los eventos.

La API Java Swing se basa en una arquitectura

dirigida por eventos (biblioteca gráfica)

Page 19: Patrones de Diseño - kybele.etsii.urjc.es · Patrones Es una solución reusable de problemas comunes. Los patrones solucionan problemas que existen en muchos niveles de abstracción

Arquitectura de patrón Modelo –Vista-

Controlador

Es un patrón de arquitectura de software que separa los datos de una aplicación, la interfaz de usuario, y la lógica de control en tres componentes distintos.

Se ve frecuentemente en aplicaciones web, donde:

la vista es la página HTML y el código que provee de datos dinámicos a la página.

El modelo es el Sistema de Gestión de Base de Datos y la Lógica de negocio.

El controlador es el responsable de recibir los eventos de entrada desde la vista.

Page 20: Patrones de Diseño - kybele.etsii.urjc.es · Patrones Es una solución reusable de problemas comunes. Los patrones solucionan problemas que existen en muchos niveles de abstracción

Elementos del patrón:

Modelo: datos y reglas de negocio

Vista: muestra la información del modelo al

usuario

Controlador: gestiona las entradas del usuario

Page 21: Patrones de Diseño - kybele.etsii.urjc.es · Patrones Es una solución reusable de problemas comunes. Los patrones solucionan problemas que existen en muchos niveles de abstracción
Page 22: Patrones de Diseño - kybele.etsii.urjc.es · Patrones Es una solución reusable de problemas comunes. Los patrones solucionan problemas que existen en muchos niveles de abstracción

Patrones de Diseño

Page 23: Patrones de Diseño - kybele.etsii.urjc.es · Patrones Es una solución reusable de problemas comunes. Los patrones solucionan problemas que existen en muchos niveles de abstracción

Un patrón de diseño es una descripción de

clases y objetos comunicándose entre sí,

adaptado para resolver un problema de

diseño general en un contexto particular

Page 24: Patrones de Diseño - kybele.etsii.urjc.es · Patrones Es una solución reusable de problemas comunes. Los patrones solucionan problemas que existen en muchos niveles de abstracción

Elementos de un patrón

Nombre: describe el problema de diseño.

El problema: describe cuándo aplicar el patrón.

La solución: describe los elementos que

componen el diseño, sus relaciones,

responsabilidades y colaboración

Page 25: Patrones de Diseño - kybele.etsii.urjc.es · Patrones Es una solución reusable de problemas comunes. Los patrones solucionan problemas que existen en muchos niveles de abstracción

Categorías basadas en su PROPÓSITO

Creacionales: Patrones creacionales tratan con

las formas de crear instancias de objetos.

Estructurales: Los patrones estructurales

describen como las clases y objetos pueden ser

combinados para formar grandes estructuras y

proporcionar nuevas funcionalidades.

Comportamiento: Los patrones de

comportamiento nos ayudan a definir la

comunicación e iteración entre los objetos de un

sistema. El propósito de este patrón es reducir

el acoplamiento entre los objetos.

Page 29: Patrones de Diseño - kybele.etsii.urjc.es · Patrones Es una solución reusable de problemas comunes. Los patrones solucionan problemas que existen en muchos niveles de abstracción

Creacional: Singleton

Muchas veces, en nuestras aplicaciones necesitamos acceder fácilmente

a un objeto único, la instancia única de cierta clase: un gestor de

impresoras, un pool de conexiones a una base de datos, un gestor de

parámetros de configuración, etc.

Page 30: Patrones de Diseño - kybele.etsii.urjc.es · Patrones Es una solución reusable de problemas comunes. Los patrones solucionan problemas que existen en muchos niveles de abstracción

Estructural: Composición

Se trata de un patrón estructural y su propósito

es la composición de objetos en estructuras de

árbol para representar jerarquías parte-todo. El

patrón permitirá a los clientes tratar de forma

uniforme los objetos y las composiciones

Page 31: Patrones de Diseño - kybele.etsii.urjc.es · Patrones Es una solución reusable de problemas comunes. Los patrones solucionan problemas que existen en muchos niveles de abstracción

Comportamiento: State

Se utiliza cuando el comportamiento de un objeto cambia dependiendo del estado del mismo y existe una gran complejidad en el código.

Se implementa una clase para cada estado diferente del objeto y el desarrollo de cada método según un estado determinado.

El objeto de la clase a la que le pertenecen dichos estados resuelve los distintos comportamientos según su estado, con instancias de dichas clases de estado.

Page 32: Patrones de Diseño - kybele.etsii.urjc.es · Patrones Es una solución reusable de problemas comunes. Los patrones solucionan problemas que existen en muchos niveles de abstracción
Page 33: Patrones de Diseño - kybele.etsii.urjc.es · Patrones Es una solución reusable de problemas comunes. Los patrones solucionan problemas que existen en muchos niveles de abstracción

Patrones J2EE

De acuerdo al libro "J2EE PATTERNS Best Practices and Design Strategies", existen 5 capas en la arquitectura J2EE:

Cliente

Presentación

Negocios

Integración

Recurso

http://java.ciberaula.com/articulo/diseno_patrones_j2ee/

http://java.sun.com/blueprints/corej2eepatterns/Patterns/index.html

Page 34: Patrones de Diseño - kybele.etsii.urjc.es · Patrones Es una solución reusable de problemas comunes. Los patrones solucionan problemas que existen en muchos niveles de abstracción

Idioms

Patrones de bajo nivel.

Solucionan problemas específicos de la

implementación en un lenguaje de

programación.

Ej: Conveciones de nombres, Formato para el

código fuente, Manejo de memoria.