You are on page 1of 30

Patrones de Diseo

Ing. Francisco Martn Riccio Chvez paco_jaco@yahoo.com

ndice
Patrones de Diseo Fundamentales. Patrones de Creacin. Patrones de Descomposicin. Descargar patrones (mdl).

Patrones de Diseo Fundamentales


Se utilizan frecuentemente en la definicin de otros patrones. Patrn Delegacin. Patrn Interfaz. Patrn Inmutable. Patrn Marker Interface. Patrn Proxy.
3

Patrn Delegacin
Se utiliza para extender la funcionalidad de una clase. Incorpora la funcionalidad de una clase usando una instancia de ella y llamando a sus mtodos. Cuando 2 clases tiene como relacin el siguiente criterio: es-un-rol / ejecutado-por. Utilizado cuando no se desea usar la herencia entre clases. Descargar.
4

Base
(from Pat ron Delegacin) Operacion1() Operacion2() Operacion3() 1 0..1

Delegadora
(from Patron Delegacin) objBase : Base Operacion1() Operacion2() Operacion4()

es - un - rol

La clase Delegadora puede obviar mtodos que tiene la clase Base.

Patrn Interfaz
Sirve para mantener un servicio uniforme a las clases clientes que llaman a clases servicios. Define un comportamiento comn entre varias clases. Descargar.

Servicio1 Cliente Servicios Provee un comportamiento comn y un servicio uniforme entre las clases de servicio. Servicio2
Metodo1() Metodo2()

Patrn Inmutable
Sirve para crear objetos donde no cambien sus valores en el tiempo. En caso de cambiar, se debe crear una nueva instancia. Tambin es utilizado para asegurar que una informacin no cambie en el tiempo. No utiliza mtodos set. Ejemplo: La configuracin de un programa durante su ejecucin. Un artculo publicado en una fecha determinada.

Descargar.

Inmutable
atributo1 atributo2 create(valor1, valor2) getAtributo2() getAtributo1()

Patrn Marker Interface


Se puede utilizar para saber si un objeto pertenece a un conjunto de clases. Habitualmente se utiliza en clases de utilidades que tienen que determinar algo sobre objetos sin asumir que son instancias de una determinada clase o no. Descargar.
10

Clase2 Cliente
(from Patrn Interfaz)

Marker Permite determinar si un objeto pertenece a un grupo de clases. if (clase.class.isInstance(obj)) { ... }


Metodo1() Metodo2()

Clase1

11

Patrn Proxy
Permite una transparencia entre la comunicacin de un objeto y uno o varios objetos que proveen servicios. Permite controlar el acceso a los servicios, se encarga de la dificultad que hubiera al llamar a los servicios como es el caso de los servicios remotos, temas de seguridad, etc. Los objetos proxy se pueden encargar de temas de concurrencia al llamar objetos que proveen servicios. Descargar. 12

Cliente
(from Patrn Interfaz)

Proxy IProxy

<<COM+>>

ServicioRemoto

La clase Cliente no sabe quien le provee el servicio y le es transparente la comunicacin con el objeto remoto que le provee el servicio.

Metodo1() Metodo2()

13

Patrones de Creacin
Proveen ayuda a la hora de crear objetos, principalmente cuando esta creacin requiere toma de decisiones. Patrn Factory. Patrn Abstract Factory. Patrn Builder. Patrn Prototipo.
14

Patrn Factory
El cliente se abstrae de la instancia a crear. Centraliza la creacin de objetos. Provee una interfaz para el cliente, permitiendo crear una familia de objetos sin especificar su clase. Descargar.

15

Proveedor_BD1 TFactoria IBD Proveedor_BD2


Metodo1() Metodo2() <<Static>> getProveedorBD(tipo) : IBD

Cliente
(from Patrn Interfaz)

16

Patrn Abstract Factory


Permite crear familias de objetos relacionados sin especificar sus clases concretas. Permite proporcionar una biblioteca de clases y slo se permitan revelar sus interfaces y no sus implementaciones. Descargar.
17

Proveedor_BD1
(from Patron Factory)

Factoria1 IBD
(from Patro..) .

Factoria2

IFactoria
<<St atic>> getBD() : IB D

Proveedor_BD2
(from Patron Factory) Met odo1() Met odo2()

Cada factoria podra llamar a cada proveedor agrupandolos por criterios. Ejemplo: Factoria de proveedores libres y factoria de proveedores de paga.

Factoria_Abstracta
<<Static>> getFactoria(tipo) : IFactoria

Cliente
(from Patrn Interfaz)

18

Patrn Builder
Permite crear un objeto complejo Separa los datos de la representacin que tenga el objeto, permitiendo crear diferentes representaciones del objeto. Al cliente se le oculta los detalles de la construccin de los objetos. Es normalmente utilizada para crear pantallas. Ejemplo: Al crear una pantalla grfica dependiendo de algunos criterios, la pantalla pudiera tener mas o menos controles. Descargar.
19

Director
create() Construir(objeto : Clase_Concreta)

Cliente
(from Patrn Interfaz)

Clase
0..1 <<Abstract>> atributo1 atributo2 1 ParteA() ParteB() Metodo1()

Clase_Concreta
objClase : Clase <<Abstract>> Contruye_Parte_A() <<Abstract>> Contruye_Parte_B() <<Abstract>> Contruye_Parte_C() getObjeto() : Clase

Builder
20

: Cliente

: Director

: Builder

: Clase

1: crear() 2: crear() 3: Construir(objAbstractoBuilder) 4: ParteA 5: ParteA 6: ParteN 7: ParteN

8: getObjeto: Clase

21

Patrn Prototipo
Se utiliza cuando la creacin de un objeto demanda muchos recursos. Este patrn realiza la clonacin de objetos ya creados para que sean modificados sin demandar muchos recursos. Ejemplo: Si tenemos 2 pantallas de clientes ordenados por diferentes criterios basta con solo ir a la base de datos 1 vez y clonar los objetos para ajustarlo a las necesidades de ordenamiento. Descargar.
22

Cliente
(from Patrn Interfaz)

Maquina_Clonadora
Construir(ObjetoOriginal : Plantilla) : Plantilla Construir_Copias(ObjetoOriginal : Plantilla, n) : Array

Clase1
(from Pat ron Marker Int erface)

<<Abstract>>

Plantilla
Clonar()

Clase2
(from Patron Marker Interface)

23

: Cliente
1: crear
2: crear

: Maquina_Clonadora

: Clase1

3: Construir(objClase1)
4: Clonar

24

Patrones de Descomposicin
Provee ayuda para descomponer conceptos complejos en mltiples clases. Patrn Intercepting Filter. Patrn Compuesto.

25

Patrn Intercepting Filter


Permite agregar o eliminar validaciones sin modificar el cdigo existente. Ejemplo: En la capa de presentacin al enviar datos a la capa de negocio puede pasar por un proceso de filtro para asegurar que los datos sean correctos. Descargar.
26

Cliente
(from Patrn Interfaz)

FiltroManager
0.. 1 c reat e(datos) Filtrar(datos) Enviar(datos) 1

Destino

Filtro1 FiltroChain
Filtros : Array

Filtro2

IFiltro
Filtrar()

27

: Cliente

: FiltroManager

: FiltroChain

: Filtro1

: Filtro2

: Destino

1: crear(datos) 2: Filtrar(datos)

3: Filtrar(datos) 4: Filtrar(datos) 5: Enviar(datos)

28

Patrn Compuesto
Permite trabajar objetos completos y simples de la misma manera. Permite aadir nuevos componentes sin afectar a los clientes. Permite disear clases que agrupen objetos complejos, los cuales a su vez estn formados por objetos complejos o simples. Ejemplo: El costo de una bicicleta es la suma de todos los costos de sus partes, donde podramos trabajar con el costo de la bicicleta o con el costo de los frenos de la misma manera, porque ambos son costos. 29 Descargar.

Cliente
(from Pat rn Interfaz)

Compuesto
List a : Array

ICompone nte
Metodo1() Metodo2()

Agregar(Objeto : Componente)

Simple

El primer objeto creado por el cliente es la raz y conforme se vayan agregando elementos se va a formar un rbol. Muy probable que cuando se llame a uno de los mtodos de un objeto compuesto, se tenga que hacer un recorrido a los elementos que tiene en la lista y as recursivamente.
30