Java / Spring - Programmeringsgränssnitt

Innehållsförteckning
Detta är den tredje delen av en serie självstudier som fokuserar på att granska de grundläggande ämnena i Java -språket för att förbereda läsaren i användningen av Spring Framework. Den första delen av denna handledningsserie kan erhållas här och den andra delen kan erhållas här. I denna handledning kommer vi att prata om vad gränssnitt är, vad som är programmeringsgränssnitt, dess fördelar och hur det förhåller sig till vårramen.
Vi har redan sett begreppen arv och polymorfism och gränssnitt är en typ av Java -klass som kännetecknas av att representera en viss funktionalitet. I sin vanligaste form är gränssnitt en klass som består av metoder utan implementering.
 gränssnitt Drawable {public void draw (); public void selectColor (strängfärg); } 

Gränssnitt är alltid offentliga och abstrakta oavsett om du ställer in modifierare eller inte och representerar hur andra objekt interagerar med objektet som implementerar dem. Det kan låta komplicerat men det är enkelt, när en klass implementerar ett gränssnitt tvingas den ge en kropp till motsvarande metoder. Detta betyder att så länge ett objekt implementerar ett gränssnitt kan du vara helt säker på att objektet har de metoder som motsvarar det nämnda gränssnittet.
I Java implementeras gränssnitt med sökordet "implementerar" och en klass kan implementera ett eller flera gränssnitt men tvingas överbelasta metoderna som motsvarar varje gränssnitt utan undantag eller så kommer kompilatorn att kasta ett fel.
 public class Square implementerar Drawable {public String borderColor; offentlig strängfyllfärg; allmänheten int hög; offentlig int bredd; @Override public void draw () {System.out.println ("En ruta ritas med bredd" + bredd + ", höjd" + höjd + "och färg" + fyllfärg); } @Override public void selectColor (strängfärg) {fillcolor = color; }} 

 public class Line implementerar Drawable {public String strokecolor; lång offentlig sträng; @Override public void draw () {System.out.println ("Draw a line of" + long); } @Override public void selectColor (strängfärg) {strokecolor = color; }} 

I det här fallet tillåter gränssnittet dig att manipulera valfritt antal objekt utan problem med hjälp av konceptet polymorfism som vi såg i den andra delen och dessa objekt behöver inte vara i själva verket relaterade till varandra utom genom det sätt på vilket andra klasser interagerar med dem. I fallet med vårt exempel kan du senare ha pentagon, landskap eller till och med ArtWork -objekt som implementerar Drawable -gränssnittet och alla kan hanteras av alla klasser som kan manipulera Drawable -gränssnittet.
 importera java.awt.Color; importera java.util. *; public class DrawThings {// Denna klass genererar slumpmässigt ritbara objekt och ritar dem i slumpmässiga färger public static void main (String [] args) {List l = new ArrayList (); för (int i = 0; i0.5) {l.add (ny rad ()); } annat {l.add (nytt torg ()); }} för (Drawable d: l) {float H, S, B; H = (float) Math.random (); S = (float) Math.random (); B = (float) Math.random (); Färg c = Color.getHSBColor (H, S, B); d.chooseColor (String.valueOf (c)); d. draw (); }}} 

Som du kommer att se i exemplet kan huvudmetoden delas upp i två huvudmetoder, den som fyller listan över ritbara objekt och den som ritar objekten i listan. Jag inbjuder dig att använda dessa klasser och se hur de beter sig innan du går vidare till nästa avsnitt där vi kommer att se varför du kanske vill programmera gränssnittet.
I slutändan är ett gränssnitt detsamma som dess riktiga motsvarighet, tangentbordet och musen är gränssnitten som du interagerar med din dator, de interna detaljerna om hur saker som "Klicka" eller "Tryck på Esc -tangenten" utförs från gränssnittet till din dator är dolt för dig och är inte nödvändigt för dig. Det enda som är viktigt är att du kan trycka på Esc -tangenten och klicka med det gränssnittet.
När du väl har granskat vad ett gränssnitt är, hoppas jag att du kan förstå hur viktigt det kan vara att programmera ett. I huvudsak fokuserar du på att skapa dina program genom att tänka på gränssnittet som du ska använda och inte så mycket om objektet som skulle skickas till dig som en parameter. När det gäller exemplet som vi har hanterat hittills kan det skrivas om enligt följande:
 importera java.awt.Color; importera java.util. *; public class DrawThings {// Denna klass genererar slumpmässigt ritbara objekt och ritar dem i slumpmässiga färger 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 ()); } annat {l.add (nytt torg ()); }}} public static void drawList (List l) {för (Drawable d: l) {float H, S, B; H = (float) Math.random (); S = (float) Math.random (); B = (float) Math.random (); Färg c = Color.getHSBColor (H, S, B); d.chooseColor (String.valueOf (c)); d. draw (); }}} 

Förvisso separerade jag bara delarna av huvudmetoden i de två barnmetoderna men skönheten i detta är att de två metoderna bibehåller oberoende av varandra och bibehåller oberoende av implementeringarna av Drawable -gränssnittet. Om jag ville ändra en av de två metoderna skulle den andra inte påverkas minst, om Pentagon- och ArtWork -implementeringarna skulle visas, kan du lägga till dem i processen att skapa fillList (List l) -metoden och drawList ( List) metod. L) skulle inte kräva några ändringar eftersom den har programmerats in i gränssnittet.
+ ViktigtDet är att båda metoderna kan tillhöra olika klasser, de kan hanteras i olika miljöer och de kan till och med aldrig veta vilket objekt de verkligen hanterar, men så länge de implementerar Drawable -gränssnittet kommer de att kunna manipulera det och de kommer att kunna utföra de 2 metoderna som är associerade med det gränssnittet.
Jag vet att det verkar fruktansvärt komplicerat för tillfället men senare kommer vi att se hur Spring hanterar allt programmerat till ett gränssnitt och vi kommer även att se hur aspektorienterad programmering och förståelse detta kommer att hjälpa oss mycket att förstå hur våren fungerar.
Jag hoppas att vi fortsätter med dessa självstudier vecka för vecka, glöm inte att lämna dina kommentarer till nästa gång!Gillade du och hjälpte denna handledning?Du kan belöna författaren genom att trycka på den här knappen för att ge honom en positiv poäng
wave wave wave wave wave