5
1 Universidad Carlos III de Madrid Ingenier´ ıa en Inform´ atica ecnicas de Desarrollo de Programas Patrones estructurales: Adapter Juan Manuel Dodero Camino Fern´ andez Llamas c 2002-03 Juan Manuel Dodero & Camino Fern´ andez Llamas Adapter 2 Adapter El patr´ on adapter convierte la interfaz de una clase en la interfaz que el cliente espera. El adapter permite que clases con interfaces incompatibles puedan trabajar juntas. Este patr´ on se denomina tambi´ en wrapper. c 2002-03 Juan Manuel Dodero & Camino Fern´ andez Llamas Patr´ on Adapter

Adapter patrón estructural

Embed Size (px)

DESCRIPTION

Documento sobre patrones de diseño, Programación.

Citation preview

Page 1: Adapter patrón estructural

1

Universidad Carlos III de Madrid

Ingenierıa en Informatica

Tecnicas de Desarrollo de Programas

Patrones estructurales: Adapter

Juan Manuel Dodero

Camino Fernandez Llamas

c©2002-03 Juan Manuel Dodero & Camino Fernandez Llamas

Adapter 2

Adapter

El patron adapter convierte la interfaz de una clase en la interfaz que el

cliente espera.

El adapter permite que clases con interfaces incompatibles puedan trabajar

juntas.

Este patron se denomina tambien wrapper.

c©2002-03 Juan Manuel Dodero & Camino Fernandez Llamas Patron Adapter

Page 2: Adapter patrón estructural

Adapter (cont.) 3

Ejemplo

DrawingEditor Shape boundingBox() createManipulator()

Line boundingBox() createManipulator()

TextShape boundingBox() createManipulator()

TextView getExtent()

return text.getExtent()

return new TextManipulator()

c©2002-03 Juan Manuel Dodero & Camino Fernandez Llamas Patron Adapter

Adapter (cont.) 4

Aplicacion

Se desea utilizar un clase ya existente pero cuya interfaz no coincide

con la que se necesita.

Se desea crear una clase que colabora con otras clases que no tienen

interfaces compatibles.

Se desea adaptar varias subclases ya existentes adaptando la interfaz

de su clase padre comun (object adapter).

c©2002-03 Juan Manuel Dodero & Camino Fernandez Llamas Patron Adapter

Page 3: Adapter patrón estructural

Adapter (cont.) 5

Estructura - class adapter

Client Target request()

Adapter request()

Adaptee specificRequest()

specificRequest()

c©2002-03 Juan Manuel Dodero & Camino Fernandez Llamas Patron Adapter

Adapter (cont.) 6

Estructura - object adapter

Client Target request()

Adapter request()

Adaptee specificRequest()

adaptee.specificRequest()

c©2002-03 Juan Manuel Dodero & Camino Fernandez Llamas Patron Adapter

Page 4: Adapter patrón estructural

Adapter (cont.) 7

Participantes

Target Define la interfaz especıfica del dominio en el que se quiere hacer

uso de la clase que se adapta.

Client Utiliza objetos que implementan la interfaz definida por el target.

Adaptee Presenta su interfaz original, que es la que se tiene que adaptar.

Adapter Adapta la interfaz del objeto adaptado a la definida por el

target.

c©2002-03 Juan Manuel Dodero & Camino Fernandez Llamas Patron Adapter

Adapter (cont.) 8

Consecuencias

Class adapter

• No sirve para adaptar una clase y todas sus subclases

• Hace que el adapter herede el comportamiento del adaptee

• Provoca la creacion de un unico objeto - no necesita indirecciones

adicionales

Object adapter

• Permite que un adapter funcione con varios adaptee

• Hace mas complicado heredar el comportamiento del adaptee

¿Cuanto trabajo tendran los adapter?

c©2002-03 Juan Manuel Dodero & Camino Fernandez Llamas Patron Adapter

Page 5: Adapter patrón estructural

Adapter (cont.) 9

Detalles de implementacion

El class adapter es menos flexible que el object adapter

El object adapter permite que un adaptador trabaje con muchos

Adaptee (el propio Adaptee y todas sus subclases)

c©2002-03 Juan Manuel Dodero & Camino Fernandez Llamas Patron Adapter