2011-10-14 24 views
6

En el libro Design Patterns by GoF (Eric Gamma y otros), se menciona el patrón de adaptador bidireccional que se utiliza para la transparencia. Son útiles cuando 2 clientes diferentes quieren ver el mismo objeto de manera diferente. ¿Podría alguien dar un ejemplo de C++ para el mismo y en qué escenarios prácticos se puede utilizar?Qué es un patrón de adaptador bidireccional

+0

¿Es esta tarea? –

+0

:) no no .. No es una tarea, me estoy preparando para una entrevista y aunque entiendo el patrón del adaptador, no entendí el uso del adaptador bidireccional. Mencioné C++ porque los ejemplos en este libro están en Smalltalk de los que no estoy enterado. – Priyanka

+0

Pero los ejemplos en el libro están todos en C++ o Smalltalk. ¿Por qué no solo mira el código dado por GoF? ¿O fue uno dado en Smalltalk? Lo siento, no tengo mi texto aquí para verificar. – duffymo

Respuesta

0

Como explica Go4 (página 143 para mí), es una extensión de Adapter to multiple inheritance. En lugar de extender un tipo de interfaz, la clase de adaptador se extiende dos.

2

Me parece que la explicación dada here es bastante buena. Es un ejemplo de C# pero la explicación es clara y el ejemplo se puede traducir bastante fácilmente al código de C++. El ejemplo también es bastante detallado.

+1

Muy bien, la única diferencia entre un adaptador de dos vías y un adaptador de clase clásico es: 1) se puede acceder al adaptador de clase clásico a través de la interfaz Itarget/cliente sola 2) se puede acceder al adaptador de dos vías a través del Itarget/interfaz de clase, así como la interfaz adaptada – Priyanka

1

Los adaptadores bidireccionales son adaptadores que implementan ambas interfaces de Target y Adaptee. El objeto adaptado se puede usar como Destino en nuevos sistemas que tratan con clases de Destino o como Adaptado en otros sistemas que tratan con clases de Adaptado. Yendo más lejos en esta línea de pensamiento, podemos tener adaptadores que implementen n interfaces, adaptándose a n sistemas. Los adaptadores bidireccionales y los adaptadores n-way son difíciles de implementar en sistemas que no admiten herencia múltiple. Si el adaptador tiene que extender la clase Target, no puede ampliar otra clase como Adaptee, por lo que el Adaptee debería ser una interfaz y todas las llamadas deberían delegarse desde el adaptador al objeto Adaptee.

Adapter Design Pattern

Fuente: http://www.oodesign.com/adapter-pattern.html

Cuestiones relacionadas