Você está na página 1de 39

PATRONES DE DISEO

Patrones Estructurales

Andrs Tello
andres.tello@ucuenca.edu.ec

PATRONES ESTRUCTURALES

Tratan de cmo estn compuestas las clases y


objetos para formar estructuras ms grandes.
Las clases Estructurales usan herencia e
interfaces para la composicin.

Ej. Cmo la herencia mltiple combina dos o ms


clases en una. El resultado es una clase que
combina las propiedades de todos sus padres.

Muy tiles para lograr que libreras desarrolladas


independientemente trabajen juntas

ADAPTER

Intencin:
Convertir la interfaz de una clase en la interfaz
que el cliente espera.

Este patrn permite que dos clases con interfaces


incompatibles trabajen conjuntamente.

ADAPTER

Motivacin:

Adaptador entre dos clases u objetos

Cmo en la vida real, es un adaptador o puente entre dos


objetos.

Adpatador para el cargador de una laptop.

Desarrollo de Software:

Se tiene una clase que espera cierto tipo de objeto, y se tiene un objeto
que ofrece la misma funcionalidad pero que expone una interfaz
diferente.
Lo ideal es usar las dos sin tener que implementar de nuevo uno de las
dos clases, tampoco se quiere modificar una de las clases.

Solucin: Crear un Adapter

ADAPTER

Cuando usar:

Se requiere usar una clase en particular, pero su


interfaz no se adapta a la que usted necesita.

Cuando se quiere crear una clase reutilizable que


coopere con clases no previstas o no relacionadas.
Dichas clases no necesariamente tienen interfaces
compatibles

ADAPTER

Adapter usando herencia (Class Adapter)

ADAPTER

Adapter usando composicin (Object Adapter)

ADAPTER
Ejemplo 1

ADAPTER
Ejemplo 2

ADAPTER

Consecuencias:

Adapta una clase Adaptee a una clase Target, usando una


clase especfica Adaptador

Permite que la clase Adaptadora sobreescriba parte del


comportamiento de la clase que se va a Adaptar(Adaptee),
debido a que Adapter es una subclase de Adaptee

Permite que un nico adaptador pueda trabajar con varias


clases a la vez

Dificulta sobreescribir el comportamiento de la clase que se va


a adaptar(Adaptee)

BRIDGE

Intencin:
Desacoplar una abstraccin de su
implementacin de manera que las dos puedan
variar independientemente

BRIDGE

Motivacin:

Una abtraccin puede tener mltiples


implementaciones (herencia)

Herencia ata la implementacin a su abstraccin de


manera permanente

Difuculta modificar, extender y reusar las dos


independientemente

BRIDGE

BRIDGE

BRIDGE

Cuando usar:

Se desea evitar un enlace permanente entre la abstraccin y su


implementacin. Esto puede ser debido a que la implementacin
debe ser seleccionada o cambiada en tiempo de ejecucin.

Tanto las abstracciones como sus implementaciones deben ser


extensibles por medio de subclases. En este caso, el patrn
Bridge permite combinar abstracciones e implementaciones
diferentes y extenderlas independientemente.

Cambios en la implementacin de una abstraccin no deben


impactar en los clientes, es decir, su cdigo no debe tener que ser
recompilado.

BRIDGE

BRIDGE

Participantes:

Abstraction: define una interface abstracta. Mantiene una


referencia a un objeto de tipo Implementor.

RefinedAbstraction: extiende la interface definida por Abstraction

Implementor: define la interface para la implementacin de


clases. Esta interface no se tiene que corresponder exactamente
con la interface de Abstraction; de hecho, las dos interfaces
pueden ser bastante diferente. Tpicamente la interface
Implementor provee slo operaciones primitivas, y Abstraction
define operaciones de alto nivel basadas en estas primitivas.

ConcreteImplementor: implementa la interface de Implementor y


define su implementacin concreta.

BRIDGE

BRIDGE

BRIDGE

Consecuencias:

Desacopla interface e implementacin. La


implementacin de una abstraccin puede ser
configurada en tiempo de ejecucin. Adems le es
posible a un objeto cambiar su implementacin en tiempo
de ejecucin.

Mejora la extensibilidad: se puede extender las jerarquas


de Abstraction e Implementor independientemente

Esconde los detalles de la implementacin a los clientes.

COMPOSITE

Intencin:

Facilita la creacin de jerarquas de objetos donde


cada objeto se puede tratar de forma independiente
o como un conjunto de objetos anidados a travs
de la misma interfaz.

COMPOSITE

Cuando usar:

Se requiere representar jerarquas de objetos todoparte

Los objetos y composiciones de objetos deben ser


tratados de manera uniforme.

COMPOSITE

COMPOSITE

DECORATOR

Intencin:

Aade dinmicamente funcionalidad a un objeto.

Permite no tener que crear subclases incorporando


la nueva funcionalidad, sino otras que la
implementan y se asocian a la primera.

DECORATOR

Cuando usar:

El comportamiento de objetos debe ser


dinmicamente modificable, sin afectar otros
objetos.

Las funcionalidades especficas no deben residir en


la parte alta de la jerarqua de objetos.

DECORATOR

DECORATOR

FACADE

Intencin:

Proporcionar una interfaz unificada de un conjunto


de interfaces de un subsistema

Definir una interfaz de alto nivel que hace que un


subsistema sea ms fcil de utilizar

FACADE

Cuando usar:

Se usa para proporcionar una interfaz sencilla para


un sistema complejo.

Se quiere desacoplar un subsistema de sus


clientes u otros subsistemas, hacindolo mas
independiente y portable.

Se quiera dividir los sistemas en niveles: las


fachadas serian el punto de entrada a cada nivel.

FACADE

FACADE

FLYWEIGHT

Intencin:

Eliminar o reducir la redundancia cuando tenemos


gran cantidad de objetos que contienen informacin
idntica

Lograr un equilibrio entre flexibilidad y rendimiento


(uso de recursos).

FLYWEIGHT

Cuando usar:

Cuando la aplicacin usa un gran nmero de objetos.

Cuando el costo de almacenamiento es alto debido al


nmero de objetos

La gran mayora de los estados de los objetos puede


hacerse extrnseco.

Al separar el estado extrnseco, muchos grupos de


objetos pueden reemplazarse por unos pocos objetos
compartidos.

FLYWEIGHT

FLYWEIGHT

Marca: Toyota
Modelo: Yaris
Color: Blanco
Placa: XXXX

Marca: Toyota
Modelo: Yaris
Color: Rojo
Placa: 1234

Marca: Toyota
Modelo: Yaris
Color: Negro
Placa: YYYY

Marca: Toyota
Modelo: Yaris
Color: Plata
Placa: 5678

PROXY

Intencin:

Proporcionar un sustituto o intermediario para otro


objeto de modo que pueda controlarse el acceso
que se tiene hacia l

PROXY

Cuando usar:

Proxy remoto: cuando el objeto representado es


externo al sistema.

Proxy virtual: Los objetos se deben crear bajo


demanda. Se encarga de instanciar objetos cuyo
coste computacional es elevado.

Proxy de proteccin: establece controles de


acceso a un objeto dependiendo de permisos o
reglas de autorizacin.

PROXY

Você também pode gostar