Professional Documents
Culture Documents
Object Adapter:
Donde:
Adaptee: Se trata de la clase adaptada (o a adaptar). Se trata de una clase existente la cual
pretendemos adaptar para que funcione bajo una nueva interfaz. Puede haber varios Adaptees.
Target: Nueva interfaz utilizada por Client a la que debemos adaptar a Adaptee.
Adaptor: Clase que implementará la interfaz Target y se encargará de que la antigua funcionalidad
obedezca a la misma.
Consecuencias:
POSITIVAS:
NEGATIVAS:
pág. 1
Arquitectura de software y de la información Universidad Privada Antenor Orrego
Ing. Carlos Jara García
Dependiendo de la implementación, el adaptador puede contener múltiples punteros que
incrementen la complejidad del sistema.
Ejemplo:
Utilizaremos un ejemplo sencillo para entender bien la funcionalidad: Queremos adaptar una
interfaz HDMI para que se vea en televisiones con RCA. En primer lugar definiremos la clase
adaptada (Adaptee):
public HDMI(){
pág. 2
Arquitectura de software y de la información Universidad Privada Antenor Orrego
Ing. Carlos Jara García
// Adaptador de Clases
extraerVideo();
extraerAudioDcho();
extraerAudioIzdo();
obtenerVideoHD();
obtenerAudioHD();
obtenerAudioHD();
pág. 3
Arquitectura de software y de la información Universidad Privada Antenor Orrego
Ing. Carlos Jara García
// Adaptador de Objetos
public HDMItoRCAObjectAdapter(){
extraerVideo();
extraerAudioDcho();
extraerAudioIzdo();
fuente.obtenerVideoHD();
fuente.obtenerAudioHD();
pág. 4
Arquitectura de software y de la información Universidad Privada Antenor Orrego
Ing. Carlos Jara García
private void extraerAudioIzdo(){
fuente.obtenerAudioHD();
Por último queda definir un cliente que utilice el adaptador, que lo simplificaremos mostrando
únicamente el método main():
RCA conector=null;
if(args[0].equals("ClassAdapter")){
} else if(args[1].equals("ObjectAdapter")){
// De esta manera conseguimos trabajar con video HDMI como si fuese analógico
conector.obtenerCanalVideo();
conector.obtenerCanalAudioDcho();
conector.obtenerCanalAudioIzdo();
Práctica:
Se necesita realizar un programa que realice la conversión de moneda soles a dólares para realizar
las transacciones en caja de una empresa exportadora usando un objeto adaptador que permite
comunicarse con otro objeto que gestiona los ingresos y egresos en dólares (Gestión Caja).
Los métodos del interfaz objetivo son Recaudar en Soles y Pagar en Soles.
La clase adaptable (Caja en dólares) deberá tener implementado los métodos Obtener el Total en
dólares, Recaudo en dólares, pago en dólares que son los métodos utilizados por la clase
adaptadora.
pág. 5
Arquitectura de software y de la información Universidad Privada Antenor Orrego
Ing. Carlos Jara García
pág. 6