Upload
jeremy-gray
View
216
Download
0
Embed Size (px)
DESCRIPTION
Documento sobre patrones de diseño, Programación.
Citation preview
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
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
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
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
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