"Ciao, Amigo! Oggi ti dirò cos'è esattamente un « adattatore ». Spero che dopo aver appreso di questo argomento avrai una comprensione molto migliore dei flussi di input/output."
Immagina che il tuo programma utilizzi due framework scritti da altri programmatori/aziende. Entrambi i framework sono molto buoni e utilizzano i principi OOP: astrazione, polimorfismo, incapsulamento. Insieme, coprono quasi completamente ciò che il tuo programma deve fare. Ti rimane un compito semplice. È necessario passare gli oggetti creati da un framework all'altro framework. Ma entrambi i framework sono completamente diversi e "non si conoscono", cioè non hanno classi in comune. Devi in qualche modo convertire gli oggetti di un framework in oggetti dell'altro.
Questo compito può essere magnificamente risolto applicando la tecnica dell'" adattatore " (schema di progettazione):
codice java | Descrizione |
---|---|
|
Ciò riflette il modello di progettazione dell'adattatore.
L'idea di base è che la classe MyClass converte (adatta) un'interfaccia all'altra. |
"Puoi farmi un esempio più specifico?"
"OK. Diciamo che ogni framework ha la sua unica interfaccia "lista". Potrebbero assomigliare a questo:"
codice java | Descrizione |
---|---|
|
Codice dal primo framework ( Alpha ) .
AlphaList è una delle interfacce che consente al codice del framework di interagire con il codice che utilizza il framework. |
|
AlphaList Manager AlphaListManager è una classe nel framework. Il suo metodo createList crea unoggetto AlphaList |
|
Codice dal secondo framework ( Beta ).
BetaList è una delle interfacce che consente al codice del framework di interagire con il codice che utilizza il framework. BetaSaveManager è una classe nel framework. Il suo metodo saveList salva unoggetto BetaList |
|
Classe « Adapter» che converte dall'interfaccia AlphaList all'interfaccia BetaList
La classe ListAdapter implementa l' interfaccia BetaList dal secondo framework. Quando qualcuno chiama questi metodi, il codice della classe «inoltra» le chiamate alla variabile list , che è una AlphaList del primo framework. Un oggetto AlphaList viene passato al costruttore ListAdapter Il metodo setSize opera secondo le seguenti regole: se la dimensione della lista deve essere aumentata, aggiungere elementi vuoti (nulli). Se la dimensione dell'elenco deve essere ridotta, eliminare gli elementi alla fine. |
|
Un esempio di come potrebbe essere utilizzato |
"Mi è piaciuto soprattutto il tuo ultimo esempio. Molto conciso e comprensibile."
GO TO FULL VERSION