Sommario
Questa è la terza parte di una serie di tutorial focalizzati sulla revisione degli argomenti di base del linguaggio Java per preparare il lettore all'uso di Spring Framework. La prima parte di questa serie di tutorial può essere ottenuta qui e la seconda parte può essere ottenuta qui. In questo tutorial parleremo di cosa sono le interfacce, cosa sono le interfacce di programmazione, i suoi vantaggi e come si relaziona a Spring Framework.Abbiamo già visto i concetti di ereditarietà e polimorfismo e le interfacce sono un tipo di classe Java che si caratterizza per rappresentare una particolare funzionalità. Nella sua forma più comune, le interfacce sono una classe composta da metodi senza implementazione.
interfaccia Drawable {public void draw (); public void selectColor (Colore stringa); }
Le interfacce sono sempre pubbliche e astratte indipendentemente dal fatto che imposti o meno i modificatori e rappresentano il modo in cui altri oggetti interagiscono con l'oggetto che li implementa. Può sembrare complicato ma è semplice, quando una classe implementa un'interfaccia è costretta a dare un corpo ai metodi corrispondenti. Ciò significa che finché un oggetto implementa un'interfaccia puoi essere assolutamente sicuro che detto oggetto abbia i metodi corrispondenti all'interfaccia menzionata.
In Java, le interfacce sono implementate con la parola chiave "implementa" e una classe può implementare una o più interfacce ma è costretta a sovraccaricare i metodi corrispondenti a ciascuna interfaccia senza eccezioni o il compilatore genererà un errore.
public class Square implementa Drawable {public String borderColor; colore di riempimento stringa pubblico; pubblico int alto; larghezza intera pubblica; @Override public void draw () {System.out.println ("Un quadrato viene disegnato con larghezza" + larghezza + ", altezza" + altezza + "e colore" + colore di riempimento); } @Override public void selectColor (Colore stringa) {fillcolor = color; }}
public class Line implementa Drawable {public String strokecolor; stringa pubblica lunga; @Override public void draw () {System.out.println ("Traccia una linea di" + long); } @Override public void chooseColor (String color) {strokecolor = color; }}
In questo caso, l'interfaccia consente di manipolare un numero qualsiasi di Oggetti senza problemi utilizzando il concetto di polimorfismo che abbiamo visto nella seconda parte e questi oggetti non devono essere intrinsecamente correlati tra loro se non per il modo in cui interagiscono le altre classi con loro. Nel caso del nostro esempio, in seguito potresti avere pentagono, paesaggio o anche oggetti ArtWork che implementano l'interfaccia Drawable e potrebbero essere tutti gestiti da qualsiasi classe in grado di manipolare l'interfaccia Drawable.
import java.awt.Color; import java.util.*; public class DrawThings {// Questa classe genera oggetti disegnabili casualmente e li disegna con colori casuali public static void main (String [] args) {List l = new ArrayList (); for (int i = 0; i0.5) {l.add (new Line()); } else {l.add (new Square()); }} for (Disegnabile d: l) {float H, S, B; H = (mobile) Math.random (); S = (mobile) Math.random (); B = (mobile) Math.random (); Colore c = Colore.getHSBColor (H, S, ; d.chooseColor (String.valueOf (c)); d. disegnare (); }}}
Come vedrai nell'esempio, il metodo principale può essere separato in 2 metodi principali, quello che riempie l'elenco degli oggetti Drawable e quello che disegna gli oggetti nell'elenco. Ti invito a utilizzare queste classi e vedere come si comportano prima di passare alla sezione successiva in cui vedremo perché potresti voler programmare l'interfaccia.
Alla fine un'interfaccia è la stessa della sua controparte reale, la tua tastiera e il tuo mouse sono le interfacce con cui interagisci con il tuo computer, i dettagli interni di come vengono eseguite cose come "Fai clic" o "Premi il tasto Esc" da l'interfaccia al tuo computer ti è nascosta e non è necessaria per te. L'unica cosa che conta è che puoi premere il tasto Esc e fare clic usando quell'interfaccia.
Dopo aver esaminato cos'è un'interfaccia, spero che tu possa capire quanto può essere importante programmarne una. Essenzialmente ti concentri sulla creazione dei tuoi programmi pensando all'interfaccia che utilizzerai e non tanto all'oggetto che ti verrebbe passato come parametro. Nel caso dell'esempio che abbiamo trattato finora, può essere riscritto come segue:
import java.awt.Color; import java.util.*; public class DrawThings {// Questa classe genera oggetti disegnabili casualmente e li disegna con colori casuali public static void main (String [] args) {List l = new ArrayList (); fillList (l); drawList (l); } public static void fillList (List l) {for (int i = 0; i0.5) {l.add (new Line ()); } else {l.add (new Square()); }}} public static void drawList (Lista l) {for (Drawable d: l) {float H, S, B; H = (mobile) Math.random (); S = (mobile) Math.random (); B = (mobile) Math.random (); Colore c = Color.getHSBColor (H, S, ; d.chooseColor (String.valueOf (c)); d. disegnare (); }}}
Certamente ho solo separato le parti del metodo principale nei 2 metodi figlio, ma la bellezza di questo è che quei 2 metodi mantengono l'indipendenza l'uno dall'altro e mantengono l'indipendenza dalle implementazioni dell'interfaccia Drawable. Se volessi cambiare uno dei 2 metodi, l'altro non ne risentirebbe minimamente, se dovessero apparire le implementazioni Pentagon e ArtWork, potresti aggiungerle nel processo di creazione del metodo fillList (List l) e drawList ( List) l) non richiederebbe alcuna modifica perché è stato programmato nell'interfaccia.
+ ImportanteÈ che entrambi i metodi possono appartenere a classi diverse, possono essere gestiti in ambienti diversi e non possono nemmeno mai sapere quale oggetto stanno realmente gestendo ma, fintanto che implementano l'interfaccia Drawable, saranno in grado di manipolarlo e lo faranno essere in grado di eseguire i 2 metodi associati a quell'interfaccia.
So che al momento sembra terribilmente complicato, ma in seguito vedremo come Spring gestisce tutto ciò che è programmato su un'interfaccia e vedremo anche come la programmazione orientata agli aspetti e la comprensione di questo ci aiuterà molto a capire come funziona Spring.
Spero di continuare con questi tutorial settimana per settimana, non dimenticare di lasciare i tuoi commenti alla prossima volta!Ti è piaciuto e hai aiutato questo Tutorial?Puoi premiare l'autore premendo questo pulsante per dargli un punto positivo