Indholdsfortegnelse
Dette er den tredje del af en række tutorials med fokus på at gennemgå de grundlæggende emner i Java -sproget for at forberede læseren i brugen af Spring Framework. Den første del af denne tutorial -serie kan fås her, og den anden del kan fås her. I denne tutorial vil vi tale om, hvad grænseflader er, hvad der er programmeringsgrænseflader, dets fordele og hvordan det relaterer sig til Spring Framework.Vi har allerede set begreberne arv og polymorfisme og grænseflader er en type Java -klasse, der er kendetegnet ved at repræsentere en bestemt funktionalitet. I sin mest almindelige form er grænseflader en klasse, der består af metoder uden implementering.
interface Drawable {public void draw (); public void selectColor (strengfarve); }
Grænseflader er altid offentlige og abstrakte, uanset om du angiver modifikatorer eller ej og repræsenterer den måde, andre objekter interagerer med det objekt, der implementerer dem. Det lyder måske kompliceret, men det er enkelt, når en klasse implementerer en grænseflade, er den tvunget til at give et organ til de tilsvarende metoder. Dette betyder, at så længe et objekt implementerer en grænseflade, kan du være helt sikker på, at objektet har de metoder, der svarer til det nævnte interface.
I Java implementeres grænseflader med søgeordet "redskaber", og en klasse kan implementere en eller flere grænseflader, men er tvunget til at overbelaste metoderne, der svarer til hver grænseflade uden undtagelse, ellers vil kompilatoren udsende en fejl.
public class Square implementerer Drawable {public String borderColor; offentlig strengfarve; offentlig int høj; offentlig int bredde; @Override public void draw () {System.out.println ("En firkant tegnes med bredde" + bredde + ", højde" + højde + "og farve" + fyldfarve); } @Override public void selectColor (strengfarve) {fillcolor = color; }}
public class Line implementerer Drawable {public String strokecolor; lang offentlig streng; @Override public void draw () {System.out.println ("Draw a line of" + long); } @Override public void selectColor (strengfarve) {strokecolor = color; }}
I dette tilfælde giver grænsefladen dig mulighed for uden problemer at manipulere et vilkårligt antal objekter ved hjælp af konceptet polymorfisme, som vi så i anden del, og disse objekter behøver ikke at være iboende relateret til hinanden, undtagen ved den måde, hvorpå andre klasser interagerer med dem. I tilfælde af vores eksempel kan du senere have femkant-, landskabs- eller endda ArtWork -objekter, der implementerer Drawable -grænsefladen, og de kan alle håndteres af enhver klasse, der kan manipulere Drawable -grænsefladen.
import java.awt.Color; import java.util. *; public class DrawThings {// Denne klasse genererer tilfældigt tegnbare objekter og tegner dem i tilfældige farver public static void main (String [] args) {List l = new ArrayList (); for (int i = 0; i0.5) {l.add (ny linje ()); } andet {l.add (ny firkant ()); }} for (Tegnbar d: l) {float H, S, B; H = (float) Math.random (); S = (float) Math.random (); B = (float) Math.random (); Farve c = Color.getHSBColor (H, S, ; d.chooseColor (String.valueOf (c)); d. draw (); }}}
Som du vil se i eksemplet, kan hovedmetoden adskilles i 2 hovedmetoder, den der udfylder listen over tegnbare objekter og den der tegner objekterne på listen. Jeg inviterer dig til at bruge disse klasser og se, hvordan de opfører sig, før du går videre til det næste afsnit, hvor vi vil se, hvorfor du måske vil programmere grænsefladen.
I sidste ende er en grænseflade den samme som dens virkelige modstykke, dit tastatur og din mus er de grænseflader, som du interagerer med din computer, de interne detaljer om, hvordan ting som "Klik" eller "Tryk på Esc -tasten" udføres fra grænsefladen til din computer er skjult for dig og er ikke nødvendig for dig. Det eneste, der betyder noget, er, at du kan trykke på Esc -tasten og klikke ved hjælp af denne grænseflade.
Når du har gennemgået, hvad en grænseflade er, håber jeg, at du kan forstå, hvor vigtigt det kan være at programmere en. I det væsentlige fokuserer du på at oprette dine programmer og tænke på den grænseflade, du vil bruge, og ikke så meget om det objekt, der ville blive sendt til dig som en parameter. I tilfælde af eksemplet, som vi hidtil har håndteret, kan det omskrives som følger:
import java.awt.Color; import java.util. *; public class DrawThings {// Denne klasse genererer tilfældigt tegnbare objekter og tegner dem i tilfældige farver 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 ()); } andet {l.add (ny firkant ()); }}} offentlig statisk void drawList (Liste l) {for (Drawable d: l) {float H, S, B; H = (float) Math.random (); S = (float) Math.random (); B = (float) Math.random (); Farve c = Color.getHSBColor (H, S, ; d.chooseColor (String.valueOf (c)); d. draw (); }}}
Bestemt har jeg kun adskilt delene af hovedmetoden i de 2 barnemetoder, men skønheden ved dette er, at disse 2 metoder opretholder uafhængighed fra hinanden og opretholder uafhængighed af implementeringerne af Drawable -grænsefladen. Hvis jeg ville ændre en af de 2 metoder, ville den anden ikke blive påvirket mindst, hvis Pentagon og ArtWork -implementeringerne skulle vises, kunne du tilføje dem i processen med at oprette fillList (List l) -metoden og drawList ( Liste) metode. L) ville ikke kræve nogen ændringer, fordi den er programmeret i grænsefladen.
+ VigtigtDet er, at begge metoder kan tilhøre forskellige klasser, de kan håndteres i forskellige miljøer, og de kan endda aldrig vide, hvilket objekt de virkelig håndterer, men så længe de implementerer Drawable -grænsefladen, vil de være i stand til at manipulere det, og de vil være i stand til at udføre de 2 metoder, der er forbundet med denne grænseflade.
Jeg ved, at det virker frygteligt kompliceret i øjeblikket, men senere vil vi se, hvordan Spring håndterer alt programmeret til en grænseflade, og vi vil endda se, hvordan aspektorienteret programmering og forståelse dette vil hjælpe os meget til at forstå, hvordan foråret fungerer.
Jeg håber, at vi fortsætter med disse selvstudier uge for uge, glem ikke at forlade dine kommentarer til næste gang!Kan du lide og hjælpe denne vejledning?Du kan belønne forfatteren ved at trykke på denne knap for at give ham et positivt punkt