Java / Spring - Interfețe de programare

Cuprins
Aceasta este a treia parte a unei serii de tutoriale axate pe revizuirea subiectelor de bază ale limbajului Java pentru a pregăti cititorul în utilizarea Spring Framework. Prima parte a acestei serii de tutoriale poate fi obținută aici, iar a doua parte poate fi obținută aici. În acest tutorial vom vorbi despre ce sunt interfețele, ce este programarea interfețelor, avantajele sale și despre cum se raportează la Spring Framework.
Am văzut deja conceptele de moștenire și polimorfism și interfețele sunt un tip de clasă Java care se caracterizează prin reprezentarea unei anumite funcționalități. În forma sa cea mai comună, interfețele sunt o clasă formată din metode fără implementare.
 interfață desenabilă {public void draw (); public void chooseColor (String color); } 

Interfețele sunt întotdeauna publice și abstracte, indiferent dacă setați modificatori sau nu și reprezentați modul în care alte obiecte interacționează cu obiectul care le implementează. Poate suna complicat, dar este simplu, atunci când o clasă implementează o interfață este forțată să dea un corp metodelor corespunzătoare. Aceasta înseamnă că atâta timp cât un obiect implementează o interfață, puteți fi pe deplin sigur că respectivul obiect are metodele corespunzătoare interfeței menționate.
În Java, interfețele sunt implementate cu cuvântul cheie „implementează” și o clasă poate implementa una sau mai multe interfețe, dar este forțată să suprasolicite metodele corespunzătoare fiecărei interfețe fără excepție sau compilatorul va arunca o eroare.
 public class Instrumente pătrate Drawable {public String borderColor; public String fillcolor; public int high; lățimea publicului; @Override public void draw () {System.out.println ("Un pătrat este desenat cu lățime" + lățime + ", înălțime" + înălțime + "și culoare" + fillcolor); } @Override public void chooseColor (String color) {fillcolor = color; }} 

 public class Line implements Drawable {public String strokecolor; String public lung; @Override public void draw () {System.out.println ("Draw a line of" + long); } @Override public void chooseColor (String color) {strokecolor = color; }} 

În acest caz, interfața vă permite să manipulați orice număr de obiecte fără probleme folosind conceptul de polimorfism pe care l-am văzut în partea a doua și aceste obiecte nu trebuie să fie legate intrinsec între ele decât prin modul în care alte clase interacționează cu ei. În cazul exemplului nostru, mai târziu ați putea avea obiecte pentagon, peisaj sau chiar ArtWork care implementează interfața Drawable și toate acestea ar putea fi tratate de orice clasă care poate manipula interfața Drawable.
 import java.awt.Color; import java.util. *; public class DrawThings {// Această clasă generează obiecte desenabile aleatoriu și le desenează în culori aleatorii 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 ()); }} pentru (Drawable d: l) {float H, S, B; H = (float) Math.random (); S = (float) Math.random (); B = (float) Math.random (); Culoare c = Color.getHSBColor (H, S, B); d.chooseColor (String.valueOf (c)); d. trage (); }}} 

După cum veți vedea în exemplu, metoda principală poate fi separată în 2 metode principale, cea care umple Lista obiectelor desenabile și cea care desenează obiectele din listă. Vă invit să utilizați aceste clase și să vedeți cum se comportă înainte de a trece la următoarea secțiune, unde vom vedea de ce s-ar putea să doriți să programați interfața.
În cele din urmă, o interfață este aceeași ca și omologul său real, tastatura și mouse-ul sunt interfețele cu care interacționați cu computerul, detaliile interne despre modul în care sunt efectuate lucruri precum „Faceți clic” sau „Apăsați tasta Esc”. interfața cu computerul vă este ascunsă și nu este necesară pentru dvs. Singurul lucru care contează este că puteți apăsa tasta Esc și faceți clic folosind acea interfață.
După ce ați analizat ce este o interfață, sper să puteți înțelege cât de important poate fi să programați una. În esență, vă concentrați pe crearea programelor dvs. gândindu-vă la interfața pe care urmează să o utilizați și nu atât la obiectul care vi se va transmite ca parametru. În cazul exemplului pe care l-am tratat până acum, acesta poate fi rescris după cum urmează:
 import java.awt.Color; import java.util. *; public class DrawThings {// Această clasă generează obiecte desenabile aleatoriu și le desenează în culori aleatorii 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 nul DrawList (Lista l) {pentru (Drawable d: l) {float H, S, B; H = (float) Math.random (); S = (float) Math.random (); B = (float) Math.random (); Culoare c = Color.getHSBColor (H, S, B); d.chooseColor (String.valueOf (c)); d. draw (); }}} 

Cu siguranță, am separat doar părțile metodei principale în cele două metode copil, dar frumusețea este că acele 2 metode mențin independența una de cealaltă și mențin independența față de implementările interfeței Drawable. Dacă aș vrea să schimb una dintre cele 2 metode, cealaltă nu ar fi afectată cel puțin, dacă ar apărea implementările Pentagonului și ArtWork, le-ați putea adăuga în procesul de creare a metodei fillList (List l) și drawList ( Metoda List) l) nu ar necesita modificări deoarece a fost programată în interfață.
+ ImportantEste că ambele metode pot aparține unor clase diferite, pot fi manipulate în medii diferite și chiar nu pot ști niciodată ce obiect manipulează cu adevărat, dar, atâta timp cât implementează interfața desenabilă, vor putea să o manipuleze și vor să poată executa cele 2 metode asociate acelei interfețe.
Știu că pare teribil de complicat în acest moment, dar mai târziu vom vedea cum Spring gestionează totul programat pe o interfață și vom vedea chiar cum programarea orientată pe aspect și înțelegerea acestui lucru ne vor ajuta foarte mult să înțelegem cum funcționează Spring.
Sper să continuăm săptămânal cu aceste tutoriale, nu uitați să lăsați comentariile dvs. până data viitoare!V-a plăcut și ați ajutat acest tutorial?Puteți recompensa autorul apăsând acest buton pentru a-i oferi un punct pozitiv

Vei ajuta la dezvoltarea site-ului, partajarea pagina cu prietenii

wave wave wave wave wave