Java / Spring - Програмиране към интерфейси

Съдържание
Това е третата част от поредицата уроци, насочени към преглед на основните теми на езика Java, за да подготвят читателя за използването на Spring Framework. Първата част от тази серия уроци може да бъде получена тук, а втората част може да се получи тук. В този урок ще говорим за това какво представляват интерфейсите, какви са интерфейсите за програмиране, неговите предимства и как той е свързан с Spring Framework.
Вече видяхме концепциите за наследяване и полиморфизъм, а интерфейсите са вид клас Java, който се характеризира с представяне на определена функционалност. В най -често срещаната си форма интерфейсите са клас, съставен от методи без внедряване.
 интерфейс Drawable {public void draw (); public void chooseColor (Цвят на низ); } 

Интерфейсите винаги са публични и абстрактни, независимо дали сте задали модификатори или не и представляват начина, по който другите обекти взаимодействат с обекта, който ги прилага. Може да звучи сложно, но е просто, когато класът реализира интерфейс, той е принуден да даде тяло на съответните методи. Това означава, че докато обектът реализира интерфейс, можете да сте напълно сигурни, че обектът има методите, съответстващи на споменатия интерфейс.
В Java интерфейсите се реализират с ключовата дума "implements" и класът може да реализира един или повече интерфейси, но е принуден да претоварва методите, съответстващи на всеки интерфейс без изключение, или компилаторът ще хвърли грешка.
 публичен клас Square прилага Drawable {public String borderColor; публичен цвят за попълване на низове; публичен инт висок; public int width; @Override public void draw () {System.out.println ("Начертан е квадрат с ширина" + ширина + ", височина" + височина + "и цвят" + запълващ цвят); } @Override public void chooseColor (Цвят на низа) {fillcolor = color; }} 

 публичен клас Line изпълнява Drawable {public String strokecolor; дълъг публичен низ; @Override public void draw () {System.out.println ("Начертайте линия от" + long); } @Override public void chooseColor (Цвят на низ) {strokecolor = color; }} 

В този случай интерфейсът ви позволява безпроблемно да манипулирате произволен брой обекти, като използвате концепцията за полиморфизъм, която видяхме във втората част и тези обекти не трябва да са вътрешно свързани помежду си, освен по начина, по който другите класове взаимодействат с тях. В случая с нашия пример по -късно бихте могли да имате петоъгълник, пейзаж или дори ArtWork обекти, които реализират интерфейса Drawable и всички те могат да бъдат обработвани от всеки клас, който може да манипулира интерфейса Drawable.
 внос java.awt.Color; импортиране на java.util. *; публичен клас DrawThings {// Този клас генерира произволно изтеглящи се обекти и ги рисува в произволни цветове public static void main (String [] args) {List l = new ArrayList (); for (int i = 0; i0.5) {l.add (нов ред ()); } else {l.add (нов квадрат ()); }} за (Drawable d: l) {float H, S, B; H = (плаващ) Math.random (); S = (плаващ) Math.random (); B = (плаващ) Math.random (); Цвят c = Цвят.getHSBC Цвят (H, S, Б); d.chooseColor (String.valueOf (c)); d. draw (); }}} 

Както ще видите в примера, основният метод може да бъде разделен на 2 основни метода, този, който запълва Списъка на Drawable обектите и този, който рисува обектите в списъка. Каня ви да използвате тези класове и да видите как се държат, преди да преминете към следващия раздел, където ще видим защо може да искате да програмирате интерфейса.
В крайна сметка интерфейсът е същият като истинския му колега, клавиатурата и мишката ви са интерфейсите, с които взаимодействате с компютъра си, вътрешните подробности за това как се извършват неща като „Щракнете“ или „Натиснете клавиша Esc“ от интерфейсът към вашия компютър е скрит от вас и не е необходим за вас. Единственото важно нещо е, че можете да натиснете клавиша Esc и щракнете с помощта на този интерфейс.
След като прегледате какво е интерфейс, надявам се да разберете колко важно може да бъде програмирането на такъв. По същество се фокусирате върху създаването на вашите програми, като мислите за интерфейса, който ще използвате, а не толкова за обекта, който ще ви бъде предаден като параметър. В случая с примера, с който се справихме досега, той може да бъде пренаписан, както следва:
 внос java.awt.Color; импортиране на java.util. *; публичен клас DrawThings {// Този клас генерира произволно изтеглящи се обекти и ги рисува в произволни цветове public static void main (String [] args) {List l = new ArrayList (); fillList (l); drawList (l); } публичен static void fillList (List l) {for (int i = 0; i0.5) {l.add (new Line ()); } else {l.add (нов квадрат ()); }}} публичен static void drawList (List l) {for (Drawable d: l) {float H, S, B; H = (плаващ) Math.random (); S = (плаващ) Math.random (); B = (плаващ) Math.random (); Цвят c = Цвят.getHSBC Цвят (H, S, Б); d.chooseColor (String.valueOf (c)); d. draw (); }}} 

Разбира се, аз разделих само частите на основния метод в 2 -те дъщерни метода, но красотата на това е, че тези 2 метода поддържат независимост един от друг и поддържат независимост от реализациите на интерфейса Drawable. Ако исках да променя един от двата метода, другият няма да бъде засегнат най -малко, ако трябва да се появят реализациите на Пентагона и ArtWork, можете да ги добавите в процеса на създаване на метода fillList (List l) и drawList ( Метод).) Не изисква промени, тъй като е програмиран в интерфейса.
+ ВажноТова е, че и двата метода могат да принадлежат към различни класове, те могат да бъдат обработвани в различни среди и дори никога не могат да знаят с какъв обект наистина се справят, но докато прилагат интерфейса Drawable, те ще могат да го манипулират и те ще да могат да изпълняват 2 метода, свързани с този интерфейс.
Знам, че в момента изглежда ужасно сложно, но по-късно ще видим как Spring се справя с всичко програмирано към интерфейс и дори ще видим как аспектно ориентираното програмиране и разбирането на това ще ни помогнат много да разберем как работи Spring.
Надявам се да продължим с тези уроци седмица след седмица, не забравяйте да оставите коментарите си до следващия път!Хареса ли ви и помогнахте на този урок?Можете да възнаградите автора, като натиснете този бутон, за да му дадете положителна точка
wave wave wave wave wave