„Java / Spring“ - programavimo sąsajos

Turinys
Tai yra trečioji pamokų ciklo dalis, skirta apžvelgti pagrindines „Java“ kalbos temas, kad skaitytojas būtų pasirengęs naudotis „Spring Framework“. Pirmąją šios pamokos serijos dalį galite rasti čia, o antrąją - čia. Šioje pamokoje mes kalbėsime apie tai, kas yra sąsajos, kas yra programavimo sąsajos, jos privalumai ir kaip ji susijusi su pavasario programa.
Mes jau matėme paveldėjimo ir polimorfizmo sąvokas, o sąsajos yra „Java“ klasės tipas, kuriam būdingas tam tikras funkcionalumas. Dažniausiai pasitaikanti sąsaja yra klasė, sudaryta iš metodų be įgyvendinimo.
 sąsaja Piešiamasis {public void draw (); public void selectColor (eilutės spalva); } 

Sąsajos visada yra viešos ir abstrakčios, neatsižvelgiant į tai, ar nustatote modifikatorius, ar ne, ir parodote, kaip kiti objektai sąveikauja su juos įgyvendinančiu objektu. Tai gali atrodyti sudėtinga, bet paprasta, kai klasė įdiegia sąsają, ji yra priversta suteikti kūnui atitinkamus metodus. Tai reiškia, kad kol objektas įgyvendina sąsają, galite būti visiškai tikri, kad minėtas objektas turi metodus, atitinkančius minėtą sąsają.
„Java“ sąsajos įgyvendinamos naudojant raktinį žodį „padargai“, o klasė gali įdiegti vieną ar daugiau sąsajų, tačiau yra priversta perkrauti metodus, atitinkančius kiekvieną sąsają be išimties, kitaip kompiliatorius sukels klaidą.
 public class Square padargai Drawable {public String borderColor; vieša styginių užpildymo spalva; public int high; public int plotis; @Override public void draw () {System.out.println ("Nubrėžtas kvadratas, kurio plotis" + plotis + ", aukštis" + aukštis + "ir spalva" + užpildymo spalva); } @Override public void selectColor (eilutės spalva) {fillcolor = spalva; }} 

 public class Line įgyvendina Drawable {public String strokecolor; ilga vieša styga; @Override public void draw () {System.out.println ("Nubrėžkite liniją" + ilga); } @Override public void selectColor (eilutės spalva) {strokecolor = spalva; }} 

Šiuo atveju sąsaja leidžia be problemų manipuliuoti bet kokiu objektų skaičiumi, naudojant polimorfizmo sąvoką, kurią matėme antroje dalyje, ir šie objektai neturi būti iš esmės susiję vienas su kitu, išskyrus tai, kaip kitos klasės sąveikauja su jais. Mūsų pavyzdžio atveju vėliau galėtumėte turėti penkiakampius, kraštovaizdžio ar net „ArtWork“ objektus, įgyvendinančius „Drawable“ sąsają, ir juos visus galėtų tvarkyti bet kuri klasė, galinti manipuliuoti „Drawable“ sąsaja.
 importuoti java.awt.Color; importuoti java.util. *; public class DrawThings {// Ši klasė generuoja atsitiktinai piešiamus objektus ir piešia juos atsitiktinėmis spalvomis 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 ()); }} už (brėžiamas d: l) {plūdė H, S, B; H = (plūdė) Math.random (); S = (plūdė) Math.random (); B = (plūdė) Math.random (); Spalva c = spalva. Gauti HSB spalva (H, S, B); d.choseColor (String.valueOf (c)); d. lygiosios (); }}} 

Kaip matysite pavyzdyje, pagrindinį metodą galima suskirstyti į 2 pagrindinius metodus: tą, kuris užpildo piešiamų objektų sąrašą, ir tą, kuris piešia sąrašo objektus. Kviečiu naudotis šiomis klasėmis ir pažiūrėti, kaip jos elgiasi, prieš pereidamos į kitą skyrių, kuriame pamatysime, kodėl galbūt norėsite užprogramuoti sąsają.
Galų gale sąsaja yra tokia pati, kaip ir jos tikroji atitikmuo, jūsų klaviatūra ir pelė yra sąsajos, su kuriomis sąveikaujate su kompiuteriu, vidinė informacija apie tai, kaip atliekami tokie dalykai kaip „Paspaudimas“ arba „Paspauskite klavišą Esc“. kompiuterio sąsaja yra paslėpta ir jums nereikalinga. Svarbu tik tai, kad naudodami šią sąsają galite paspausti klavišą „Esc“ ir spustelėti.
Peržiūrėję, kas yra sąsaja, tikiuosi, kad suprasite, kaip svarbu ją programuoti. Iš esmės jūs sutelkiate dėmesį į savo programų kūrimą, galvodami apie sąsają, kurią ketinate naudoti, o ne tiek apie objektą, kuris jums būtų perduotas kaip parametras. Mūsų iki šiol nagrinėto pavyzdžio atveju jį galima perrašyti taip:
 importuoti java.awt.Color; importuoti java.util. *; public class DrawThings {// Ši klasė generuoja atsitiktinai piešiamus objektus ir piešia juos atsitiktinėmis spalvomis public static void main (String [] args) {List l = new ArrayList (); fillList (l); drawList (l); } public static void fillList (l sąrašas) {for (int i = 0; i0.5) {l.add (new Line ()); } else {l.add (new Square ()); }}} public static void drawList (List l) {for (Drawable d: l) {float H, S, B; H = (plūdė) Math.random (); S = (plūdė) Math.random (); B = (plūdė) Math.random (); Spalva c = spalva. Gauti HSB spalva (H, S, B); d.choseColor (String.valueOf (c)); d. lygiosios (); }}} 

Žinoma, aš išskyriau tik pagrindinio metodo dalis į 2 vaikų metodus, tačiau tai yra tai, kad šie 2 metodai išlaiko nepriklausomybę vienas nuo kito ir išlaiko nepriklausomybę nuo „Drawable“ sąsajos įgyvendinimo. Jei norėčiau pakeisti vieną iš dviejų metodų, kitas netrukdytų, jei pasirodytų „Pentagon“ ir „ArtWork“ diegimai, galite juos pridėti kurdami „fillList (List l)“ metodą ir „drawList“ Sąrašo) metodą. L) nereikėtų keisti, nes jis buvo užprogramuotas sąsajoje.
+ SvarbuTai yra tai, kad abu metodai gali priklausyti skirtingoms klasėms, jie gali būti tvarkomi skirtingose ​​aplinkose ir jie niekada negali žinoti, su kokiu objektu jie iš tikrųjų elgiasi, tačiau kol jie įgyvendins piešiamą sąsają, jie galės juo manipuliuoti ir sugebėti vykdyti 2 su ta sąsaja susietus metodus.
Žinau, kad šiuo metu tai atrodo baisiai sudėtinga, bet vėliau pamatysime, kaip „Spring“ tvarko viską, kas suprogramuota sąsajoje, ir net pamatysime, kaip į aspektus orientuotas programavimas ir supratimas mums labai padės suprasti, kaip veikia „Spring“.
Tikiuosi, kad mes tęsime šias pamokas kiekvieną savaitę, nepamirškite palikti savo komentarų iki kito karto!Ar jums patiko ir padėjo ši pamoka?Galite apdovanoti autorių paspausdami šį mygtuką, kad suteiktumėte jam teigiamą tašką

Padėsite svetainės plėtrą, dalintis puslapį su draugais

wave wave wave wave wave