Che cos'è Adapter Class in Java? Vantaggi della classe dell'adattatore e dei suoi tipi

Pubblicato: 2021-05-19

Sommario

Che cos'è una classe di adattatore?

In JAVA, una classe adapter consente l'implementazione predefinita delle interfacce listener. La nozione di interfacce listener deriva dal modello di eventi di delega. È una delle tante tecniche utilizzate per gestire gli eventi nei linguaggi di programmazione dell'interfaccia utente grafica (GUI), come JAVA.

La programmazione della GUI è prevalentemente basata sugli eventi, con l'interazione dell'utente con il sistema tramite elementi visivi e grafici associati. Ciò significa che ogni attività avviata dall'utente, come il movimento di un mouse che cambia le coordinate del puntatore del mouse sullo schermo, fa clic su un pulsante o scorre una pagina, è considerata un evento indipendente.

Ognuna di queste attività di eventi indipendenti è intrinsecamente collegata a un segmento di codice che itera la risposta che l'applicazione dovrebbe fornire all'utente. Il percorso è semplice. L'utente (sorgente) genera un evento e lo invia a una o più interfacce listener. Una volta ricevuto un potenziale di evento, l'interfaccia del listener elabora l'evento e restituisce la risposta adeguata.

Questo percorso conferma il processo di gestione degli eventi. Una classe adattatore in JAVA viene quindi utilizzata per implementare un'interfaccia con un insieme di metodi fittizi. Se un programmatore sceglie di ereditare una classe adattatore, non sarà costretto a implementare tutti i metodi elencati in una particolare interfaccia listener. La classe dell'adattatore può essere ulteriormente sottoclasse in modo che il programmatore possa sovrascrivere solo i metodi richiesti. In altre parole, utilizzando una classe adapter, il programmatore può costruire rapidamente la propria interfaccia listener per gli eventi sul campo. Questo aiuta a salvare il codice.

Qual è la relazione tra una classe Adapter e un'interfaccia Listener?

Gli ascoltatori vengono utilizzati quando il programmatore intende utilizzare la maggior parte dei metodi elencati nell'interfaccia. Se un'interfaccia listener viene implementata direttamente da una classe, tutti i metodi all'interno di tale interfaccia devono essere implementati, rendendo il codice irragionevolmente grande. Questa complessità può essere risolta chiamando una classe di adattatore. Una classe adapter si rivela essenziale nei casi in cui un evento richiede solo metodi specifici.

Il programmatore deve solo crearne una sottoclasse e sovrascrivere i metodi di interesse per utilizzare una classe adattatore. Le classi dell'adattatore sono, quindi, vantaggiose per le interfacce listener in JAVA che hanno più di un metodo. Per capire meglio questo, consideriamo l'esempio dell'interfaccia MouseListener. Questa interfaccia viene notificata ogni volta che si verifica un cambiamento nello stato del mouse. Ha cinque metodi, clic del mouse, mouseExited, mouseEntered, mousePressed e mouseReleased.

Quando viene notificato un evento, anche se solo di questi metodi è necessario, tutti devono essere implementati. I metodi che non sono necessari vengono mantenuti vuoti. Viene utilizzata una classe adapter per evitare questa implementazione non necessaria di un corpo di metodo vuoto.

Comprensione del modello di progettazione dell'adattatore

In un linguaggio non tecnico, un adattatore, per definizione, è strutturalmente progettato per consentire a due interfacce incompatibili di lavorare insieme. Un pattern adattatore è quindi in grado di rendere compatibili due interfacce incompatibili senza modificare il loro codice esistente. Le interfacce corrispondenti possono essere incoerenti, ma le loro funzionalità interne dovrebbero corrispondere al requisito ricercato. Per chiarire meglio questo, consideriamo un esempio pertinente.

Siamo consapevoli che paesi diversi hanno prese elettriche, tensioni e misurazioni di frequenza diverse. Se dobbiamo utilizzare un apparecchio progettato secondo le specifiche di un paese in un altro, dobbiamo assicurarci che l'apparecchio sia compatibile.

Ad esempio, nel Regno Unito vengono comunemente utilizzate prese di tipo G, negli Stati Uniti e in Giappone prese di tipo A e B e in India di tipo C, tipo D e tipo M. Un laptop o un dispositivo mobile trasportato dall'India quindi essere incompatibile con le specifiche elettriche di diciamo, USA e Giappone. È qui che lo scopo di un adattatore diventa essenziale per convertire un codice incompatibile in un codice compatibile.

Tipi di classi di adattatori

Le classi di adattatori possono essere trovate in java. awt.the event, pacchetti java.awt.dnd e java.swing.event. Le classi di adattatori standard con le relative interfacce listener in JAVA sono menzionate di seguito per ciascuno di questi pacchetti.

1. Java. awt. vigilia

Classe adattatore Interfaccia dell'ascoltatore
Adattatore per finestra Window Listener
Adattatore per chiavi Ascoltatore di chiavi
Adattatore per mouse Ascoltatore di topi
MouseMotionAdapter MouseMotion Listener
FocusAdapter Focus Listener
ComponentAdapter Component Listener
Adattatore per contenitori Ascoltatore di contenitori
HierarchyBoundsAdapter HierarchyBounds Listener

2. java.awt.dnd

Classe adattatore Interfaccia dell'ascoltatore
DragSourceAdapter TrascinaSourceListener
Trascina l'adattatore di destinazione Trascina Target Listener

3. javax.swing.event

Classe adattatore Interfaccia dell'ascoltatore
MouseInputAdapter Ascoltatore di input del mouse
InternalFrameAdapter InternalFrameListener

Questi sono presenti nell'Abstract Window Toolkit dei rispettivi pacchetti Java. Per comprendere la natura dei metodi contenuti nelle interfacce listener, consideriamo alcuni esempi:

  1. L'interfaccia WindowListener definisce i metodi relativi agli eventi della finestra, inclusa l'apertura e la chiusura di una finestra, l'attivazione e la disattivazione di una finestra e l'iconizzazione e la disintossicazione di una finestra.
  2. L'interfaccia KeyListener definisce i metodi che gestiscono gli eventi chiave che vengono attivati ​​dall'utente che interagisce con i componenti della tastiera.
  3. L'interfaccia di MouseListener riceve una notifica quando un mouse è stabile e riceve un potenziale evento relativo all'uscita, all'ingresso, al clic, alla pressione o al rilascio del componente sulla cornice visiva dell'utente.
  4. L'interfaccia Component Listener riceve i potenziali di eventi dei componenti. Qui, un componente si riferisce a qualsiasi oggetto grafico progettato per interagire con l'utente, come pulsanti, caselle di controllo e barre di scorrimento.

Differenza tra adattatore di classe e adattatore di oggetto

Per garantire funzionalità e flessibilità, la programmazione orientata agli oggetti come JAVA offre ai programmatori funzionalità come l'ereditarietà e la composizione. Se si tenta di riutilizzare un codice particolare ereditandone le caratteristiche da un'altra classe, la sottoclasse creata rimarrà dipendente dalla classe padre per l'intera durata del programma.

Ciò rende il sistema, in molti casi, sempre più complesso e meno testabile e rende faticosamente difficile lo scambio di funzionalità in fase di esecuzione. Nella composizione, una classe ne usa solo un'altra. Il disaccoppiamento tra i due è ulteriormente promosso definendo chiaramente le interfacce.

Il dibattito tra adattatore di classe e adattatore di oggetto può quindi essere risolto come segue. Class Adapter utilizza l'ereditarietà ed è quindi in grado di eseguire il wrapping solo di una classe. Non può eseguire il wrapping di un'interfaccia perché, per definizione, deve derivare da una classe base. Un adattatore di oggetti utilizza la composizione ed è quindi in grado di eseguire il wrapping sia delle classi che delle interfacce. Ciò si ottiene principalmente perché, nella composizione, ogni classe o interfaccia è un membro privato e incapsulato.

Vantaggi di una classe di adattatori

  1. Una classe adattatore aiuta le classi non correlate a lavorare insieme.
  2. Con l'uso di una classe adattatore, la stessa classe può essere utilizzata in più modi.
  3. Agli utenti viene fornita l'opzione di un kit pluggable per lo sviluppo di applicazioni. L'utilizzo della classe, quindi, diventa altamente riutilizzabile.
  4. Migliora la trasparenza delle classi.
  5. Fornisce un modo per includere i modelli correlati in una classe.

Impara i corsi di ingegneria del software online dalle migliori università del mondo. Guadagna programmi Executive PG, programmi di certificazione avanzati o programmi di master per accelerare la tua carriera.

Conclusione

Con questo articolo, abbiamo compreso i meccanismi di una classe adattatore in JAVA, i tre pacchetti principali che contengono classi adattatore e i vantaggi delle classi adattatore per i programmatori. Le classi adapter sono classi astratte per la ricezione di vari eventi ed esistono per comodità per la creazione di oggetti listener. Con le loro diverse funzionalità, le classi di adattatori offrono ai programmatori la piattaforma per essere innovativi tramite la metodologia Swing.

Se desideri migliorare le tue abilità Java, devi mettere le mani su questi progetti Java. Se sei interessato a saperne di più su Java, lo sviluppo full-stack, dai un'occhiata al programma Executive PG di upGrad & IIIT-B in Full-stack Software Development, progettato per i professionisti che lavorano e offre oltre 500 ore di formazione rigorosa, 9+ progetti e incarichi, stato di Alumni IIIT-B, progetti pratici pratici e assistenza sul lavoro con le migliori aziende.

Che cos'è la classe dell'adattatore in Java?

La classe dell'adattatore è una classe definita utilizzando il modello dell'adattatore. È possibile utilizzare un adattatore per aggiungere nuove funzionalità a una classe esistente senza modificare la classe originale. Ad esempio, la classe java.util.Scanner proviene dal pacchetto java.util. La classe Scanner non può leggere da un file poiché un file non è un InputStream. Per leggere da un file creiamo una classe adattatore che accetta un InputStream come argomento e restituisce i dati elaborati come oggetto. Il pattern dell'adattatore viene utilizzato per estendere la funzionalità di una classe esistente senza modificarne il codice in alcun modo.

Cosa sono i modelli di progettazione in Java?

Un modello di progettazione è una soluzione generale riutilizzabile a un problema che si verifica comunemente all'interno di un determinato contesto nella progettazione del software. Non è un progetto finito che può essere trasformato direttamente in codice. È una descrizione o un modello su come risolvere un problema che può essere utilizzato in molte situazioni diverse. Nella programmazione orientata agli oggetti, i modelli di progettazione sono convenzioni stabilite che facilitano la progettazione e l'implementazione di sistemi software. Esistono diversi modelli di progettazione in Java. Non è necessario che un design pattern debba essere preso da un'altra lingua. I modelli di progettazione possono essere scritti in una forma molto semplice e breve.

Qual è il design pattern più utilizzato in Java?

Troverai molti modelli di design in Java. Il modello di progettazione più utilizzato è Factory Pattern. Ha molte applicazioni nello sviluppo aziendale. Aiuta a rimuovere la dipendenza da classi concrete nell'applicazione. Ti facciamo un esempio di vita reale. In un'applicazione di e-commerce, potrebbe essere necessario creare un oggetto di un utente sia nell'ambiente di test che in quello di produzione. La classe utente può avere molte sottoclassi come Admin, Shopkeeper, Seller, User ecc. Il metodo principale comune nel modello factory è simile a: public class UserFactory { public static Object create () { User user = createAdmin (); // controlla se l'amministratore è autorizzato a restituire l'utente; // restituisce l'utente corrente } }. Guarda qui come la classe utente non dipende dalla classe concreta. Sebbene non sia un esempio completo, mostra come funziona il modello Factory.