"¡Hola, amigo! Hoy te diré qué es exactamente un " adaptador ". Espero que después de aprender sobre este tema, comprendas mucho mejor los flujos de entrada/salida".
Imagine que su programa utiliza dos marcos escritos por otros programadores/empresas. Ambos marcos son muy buenos y utilizan los principios de OOP: abstracción, polimorfismo, encapsulación. Juntos, cubren casi por completo lo que su programa necesita hacer. Te queda una tarea simple. Debe pasar los objetos creados por un marco al otro marco. Pero ambos marcos son completamente diferentes y "no se conocen", es decir, no tienen clases en común. Debe convertir de alguna manera los objetos de un marco en objetos del otro.
Esta tarea se puede resolver maravillosamente aplicando la técnica del « adaptador » (patrón de diseño):
codigo Java | Descripción |
---|---|
|
Esto refleja el patrón de diseño del adaptador.
La idea básica es que la clase MyClass convierte (adapta) una interfaz a la otra. |
"¿Puedes darme un ejemplo más específico?"
"Está bien. Digamos que cada marco tiene su propia interfaz de "lista" única. Podrían verse así:"
codigo Java | Descripción |
---|---|
|
Código del primer marco ( alfa )
AlphaList es una de las interfaces que permite que el código del marco interactúe con el código que usa el marco. |
|
AlphaList Manager AlphaListManager es una clase en el marco. Su método createList crea unobjeto AlphaList |
|
Código del segundo marco ( Beta ).
BetaList es una de las interfaces que permite que el código del marco interactúe con el código que usa el marco. BetaSaveManager es una clase en el marco. Su método saveList guarda unobjeto BetaList |
|
Clase «Adapter» que convierte de la interfaz AlphaList a la interfaz BetaList
La clase ListAdapter implementa la interfaz BetaList del segundo marco. Cuando alguien llama a estos métodos, el código de clase «reenvía» las llamadas a la variable de lista , que es una AlphaList del primer marco. Un objeto AlphaList se pasa al constructor ListAdapter El método setSize funciona de acuerdo con las siguientes reglas: si se debe aumentar el tamaño de la lista, agregue elementos vacíos (nulos). Si es necesario reducir el tamaño de la lista, elimine elementos al final. |
|
Un ejemplo de cómo se podría usar |
"Me gustó más tu último ejemplo. Muy conciso y comprensible".
GO TO FULL VERSION