Está en la página 1de 53

Temas Avanzados de

Ingeniera de Sistemas II
Universidad Nacional
de Trujillo

Docente: Ing. Haybert Escobedo Neyra


ihaybert@gmail.com

PATRONES DE DISEO

Semana 06

Escuela Profesional de Ingeniera de Sistemas


ING. HAYBERT ESCOBEDO NEYRA

Introduccin a Patrones de
Diseo

Introduccin a Patrones de Diseo


ING. HAYBERT ESCOBEDO NEYRA

Modelos de Arquitectura
JEE

ING. HAYBERT ESCOBEDO NEYRA

Modelos de Arquitectura
Web

Modelo
1
JSP Componentes Java

Modelo
2
JSPServletComponente JavaJSP

ING. HAYBERT ESCOBEDO NEYRA

Modelo 2: MVC

Patrn de Diseo MVC

ING. HAYBERT ESCOBEDO NEYRA

Modelo 2: MVC en JEE

Patrn de Diseo MVC en JEE

POJOS (Plain Old Java Objects, clases normales en Java,


no requieren de un contenedor para su funcionamiento.

ING. HAYBERT ESCOBEDO NEYRA

INTRODUCCIN

El desarrollador de la capa web debe trabajar


con patrones de diseo especficos que tengan
en cuenta los paradigmas arquitectnicos de
la arquitectura MVC Modelo 2.
De los muchos patrones disponibles, se
pueden considerar estos tres patrones, que
pueden ser utilizados en combinacin:
Service-to-Worker
Dispatcher View
Bussiness Delegate

ING. HAYBERT ESCOBEDO NEYRA

Patrones de diseo

Patrones de Diseo JEE 6.0


ING. HAYBERT ESCOBEDO NEYRA

Patrones de Diseo

ING. HAYBERT ESCOBEDO NEYRA

INTRODUCCIN

El diseo es un modelo del sistema,


realizado con una serie de principios
y tcnicas, que permite describir el
sistema con el suficiente detalle
como para ser implementado.
El objetivo del diseo de software
es llegar a un producto de calidad.

ING. HAYBERT ESCOBEDO NEYRA

INTRODUCCIN (Cont)

En el contexto de diseo, podemos


observar que los buenos ingenieros
tienen esquemas y estructuras de
solucin que usan numerosas veces
en funcin del contexto del
problema.

ING. HAYBERT ESCOBEDO NEYRA

INTRODUCCIN (Cont)

Estos esquemas y estructuras son


conceptos reusables y nos permiten
no reinventar la rueda.
Un buen ingeniero reutiliza un
esquema
de
solucin
ante
problemas similares.

ING. HAYBERT ESCOBEDO NEYRA

HISTORIA

La idea de patrn de diseo que


utilizamos en Ingeniera de Software
viene de la arquitectura.
En 1977 se public :
A Pattern language:
Towns/Building/Construction
de Christopher Alexander y
otros.
ING. HAYBERT ESCOBEDO NEYRA

(Cont)

HISTORIA

La contribucin ms clebre es el
libro Design Patterns: Elements of
Reusable Object-Oriented
Software de la famosa GOF (Gang
of Four).

Erick Gamma
Richard Helm
Ralph Johnson
John Vlissides
ING. HAYBERT ESCOBEDO NEYRA

DEFINICIN

Segn Alexander, cada patrn


describe un problema que ocurre
una y otra vez en nuestro entorno,
para describir despus el ncleo de
la solucin a ese problema, de tal
manera que esa solucin pueda ser
usada ms de un milln de veces sin
hacerlo siquiera dos veces de la
misma forma.
ING. HAYBERT ESCOBEDO NEYRA

(Cont)

DEFINICIN

El patrn es un esquema de
solucin que se aplica a un tipo de
problema.
Esta aplicacin del patrn no es
mecnica, sino que requiere de
adaptacin y matices.

ING. HAYBERT ESCOBEDO NEYRA

(Cont)

DEFINICIN

"Una arquitectura orientada a


objetos bien estructurada est llena
de patrones. La calidad de un
sistema orientado a objetos se mide
por la atencin que los diseadores
han prestado a las colaboraciones
entre sus objetos. Los patrones
conducen a arquitecturas ms
pequeas, ms simples y ms
comprensibles". (Grady Booch)
ING. HAYBERT ESCOBEDO NEYRA

CARACTERSTICAS

No son inventados, provienen de la


experiencia practica.
Describen un grupo de componentes,
sus relaciones, interacciones y
responsabilidades.
Proveen un vocabulario comn entre los
diseadores, desarrolladores.
Proveen una plantilla / molde
conceptual para dar solucin a un
problema de diseo

ING. HAYBERT ESCOBEDO NEYRA

VENTAJAS

Cada patrn permite que algunos


aspectos de la estructura del
sistema puedan cambiar
independientemente de otros
aspectos.
Facilitan la reusabilidad,
extensibilidad y mantenimiento.

ING. HAYBERT ESCOBEDO NEYRA

VENTAJAS (Cont)

Al recoger la experiencia de
problemticas anteriores, partimos
con una buena base para enfrentar
el nuevo desafo.
Los patrones son patrones del
dominio de la solucin.

ING. HAYBERT ESCOBEDO NEYRA

CLASIFICACIN

Creacionales: solucionan problemas de


creacin de instancias. Nos ayudan a
encapsular y abstraer dicha creacin.
Estructurales: solucionan problemas de
composicin (agregacin) de clases y
objetos.
De Comportamiento: soluciones
respecto a la interaccin y
responsabilidades entre clases y objetos,
as como los algoritmos que encapsulan.
ING. HAYBERT ESCOBEDO NEYRA

CLASIFICACIN (segn su propsito)

ING. HAYBERT ESCOBEDO NEYRA

CLASIFICACIN (segn su propsito)

Clases

CREACIONAL

ESTRUCTURAL

COMPORTAMIENTO

Delegan
parte de la
creacin a
las
subclases

Usan la
herencia para
componer
clases.

Usan la herencia
para describir
algoritmos y
flujos de control.

Describen
formas de
ensamblar
objetos.

Describen cmo
grupos de
objetos
colaboran para
llevar a cabo una
tarea.

Delegan
parte de la
creacin a
Objetos
otro objeto.

ING. HAYBERT ESCOBEDO NEYRA

Catlogo de
Patrones
en JEE

ING. HAYBERT ESCOBEDO NEYRA

CAPA DE PRESENTACIN

Decorating Filter / Intercepting


Filter
Front Controller/ Front Component
View Helper

Composite view
Service To Worker
Dispatcher View

ING. HAYBERT ESCOBEDO NEYRA

Patrn View Helper

ING. HAYBERT ESCOBEDO NEYRA

CAPA DE NEGOCIOS

Business Delegate
Value Object/ Data Transfer
Object/Replicate Object
Session Facade/ Session Entity
Facade/ Distributed Facade
Aggregate Entity
Value Object Assembler
Value List Handler/ Page-by-Page
Iterator/ Paged List
Service Locator
ING. HAYBERT ESCOBEDO NEYRA

CAPA DE INTEGRACIN

Data Access Object Service


Activator
Consiste en utilizar un objeto de acceso
a datos para abstraer y encapsular todos
los accesos a la fuente de datos. El DAO
maneja la conexin con la fuente de
datos para obtener y almacenar datos.

Service Activator

ING. HAYBERT ESCOBEDO NEYRA

Patrn Delegate
Delegado

ING. HAYBERT ESCOBEDO NEYRA

Patrn Delegate

La herencia es til para modelar


relaciones de tipo es-un o es-una,
ya que estos tipos de relaciones son
de naturaleza esttica.
Sin embargo, relaciones de tipo esun-rol ejecutado-por son mal
modeladas con herencia.

ING. HAYBERT ESCOBEDO NEYRA

Patrn Delegate (Cont)

Un
objeto
receptor
delega
operaciones en su delegado.
Presente en muchos patrones:
State, Strategy, Visitor,

ING. HAYBERT ESCOBEDO NEYRA

Patrn Modelo-VistaControlador

ING. HAYBERT ESCOBEDO NEYRA

Patrn:
Modelo-Vista-Controlador

Para el diseo de aplicaciones con


sofisticadas interfaz se utiliza el
patrn de diseo Modelo-VistaControlador.
La lgica de una interfaz de usuario
cambia con ms frecuencia que los
almacenes de datos y la lgica de
negocio.
ING. HAYBERT ESCOBEDO NEYRA

Patrn:
Modelo-Vista-Controlador (Cont)

Se trata de realizar un diseo que


desacople la vista del modelo, con
la finalidad de mejorar la
reusabilidad.
De esta forma, las modificaciones
en las vistas impactan en menor
medida en la lgica de negocio o
de datos.
ING. HAYBERT ESCOBEDO NEYRA

ELEMENTOS DEL PATRN

Modelo:
Datos y reglas de negocio
Vista:
Muestra la informacin del modelo
al usuario
Controlador:
Gestiona las entradas del usuario
ING. HAYBERT ESCOBEDO NEYRA

Elementos del Patrn (Cont)

ING. HAYBERT ESCOBEDO NEYRA

Responsabilidad del MODELO

Acceder a la capa de almacenamiento


de datos.
Lo ideal es que el modelo sea
independiente del sistema de
almacenamiento.
Define las reglas de negocio (la
funcionalidad del sistema). Un ejemplo
de regla puede ser la siguiente: "Si la
mercanca pedida no est en el
almacn, consultar el tiempo de
entrega estndar del proveedor".
ING. HAYBERT ESCOBEDO NEYRA

(Cont)

Responsabilidad del MODELO

Lleva un registro de las vistas y


controladores del sistema.

Si estamos ante un modelo activo,


notificar a las vistas los cambios que
en los datos pueda producir un agente
externo (por ejemplo, un archivo batch
que actualiza los datos, un
temporizador que desencadena una
insercin, etc).
ING. HAYBERT ESCOBEDO NEYRA

Responsabilidad del
CONTROLADOR

Recibe los eventos de entrada (un clic,


un cambio en un campo de texto, etc.).

Contiene reglas de gestin de eventos,


del tipo "SI Evento Z, Accin W".

Estas acciones pueden suponer


peticiones al modelo o a las vistas. Una
de estas peticiones a las vistas puede
ser una llamada al mtodo
"Actualizar()". Una peticin al modelo
puede ser "ObtenerTiempoEntrega(
NuevaOrdenVenta )".
ING. HAYBERT ESCOBEDO NEYRA

Responsabilidad de las VISTAS

Recibir datos del modelo y los muestra


al usuario.
Tienen un registro de su controlador
asociado (normalmente porque adems
lo instancia).
Pueden dar el servicio de
"Actualizacin()", para que sea
invocado por el controlador o por el
modelo (cuando es un modelo activo
que informa de los cambios en los datos
producidos por otros agentes).
ING. HAYBERT ESCOBEDO NEYRA

Ejemplo de MVC
Un ejemplo de MVC con un modelo pasivo (aquel que no
notifica cambios en los datos) es la navegacin web, que
responde a las entradas del usuario, pero no detecta
los cambios en datos del servidor.

ING. HAYBERT ESCOBEDO NEYRA

Patrn FACTORY(Factoria)

ING. HAYBERT ESCOBEDO NEYRA

Familia de Patrones

Factora simple: una clase que crea


objetos de otras clases. No delega
en otras subclases y sus mtodos
pueden ser estticos.
Factory Method: Se define como
una interfaz para crear objetos,
como en Abstract Factory, pero se
delega a las subclases implementar
la creacin en concreto
ING. HAYBERT ESCOBEDO NEYRA

Familia de Patrones (Cont.)

Abstract Factory:
Nos da una interfaz para crear
objetos de alguna familia, sin
especificar la clase en concreto.

ING. HAYBERT ESCOBEDO NEYRA

Factory

ING. HAYBERT ESCOBEDO NEYRA

Factory Method

ING. HAYBERT ESCOBEDO NEYRA

Factory : Ejemplo

ING. HAYBERT ESCOBEDO NEYRA