Јава / Спринг - Програмирање интерфејса

Преглед садржаја
Ово је трећи део низа водича усредсређених на преглед основних тема језика Јава како би се читаоци припремили за употребу Спринг Фрамеворк -а. Први део ове серије водича можете преузети овде, а други део овде. У овом водичу ћемо говорити о томе шта су интерфејси, шта су програмски интерфејси, његове предности и како се односи на Спринг Фрамеворк.
Већ смо видели концепте наслеђивања и полиморфизма, а интерфејси су врста Јава класе коју карактерише представљање одређене функционалности. У свом најчешћем облику, интерфејси су класа састављена од метода без имплементације.
 интерфејс Дравабле {публиц воид драв (); публиц воид цхоосеЦолор (Боја низа); } 

Интерфејси су увек јавни и апстрактни, без обзира да ли сте поставили модификаторе или не и представљају начин на који други објекти ступају у интеракцију са објектом који их примењује. Можда звучи компликовано, али је једноставно, када класа имплементира интерфејс, приморана је да преда тело одговарајућим методама. То значи да све док објекат имплементира интерфејс, можете бити потпуно сигурни да наведени објекат има методе које одговарају поменутом интерфејсу.
У Јави, интерфејси су имплементирани са кључном речи "имплементс" и класа може имплементирати један или више интерфејса, али је приморана да преоптерети методе које одговарају сваком интерфејсу без изузетка или ће компајлер избацити грешку.
 јавна класа Скуаре примењује Дравабле {публиц Стринг бордерЦолор; публиц Стринг филлцолор; јавни инт висок; публиц инт видтх; @Оверриде публиц воид драв () {Систем.оут.принтлн ("Квадрат је нацртан ширином" + ширином + ", висином" + висином + "и бојом" + испуна); } @Оверриде публиц воид цхоосеЦолор (Боја низа) {филлцолор = цолор; }} 

 јавна класа Лине имплементира Дравабле {публиц Стринг строкецолор; дуги јавни низ; @Оверриде публиц воид драв () {Систем.оут.принтлн ("Нацртај линију од" + лонг); } @Оверриде публиц воид цхоосеЦолор (Боја низа) {строкецолор = цолор; }} 

У овом случају, интерфејс вам омогућава да без проблема манипулишете било којим бројем објеката користећи концепт полиморфизма који смо видели у другом делу и ти објекти не морају бити суштински повезани једни с другима, осим по начину на који друге класе ступају у интеракцију са њима. У случају нашег примера, касније бисте могли имати петерокутне, пејзажне или чак АртВорк објекте који имплементирају Дравабле интерфејс, а њима се може бавити било која класа која може да манипулише Дравабле интерфејсом.
 импорт јава.авт.Цолор; импорт јава.утил. *; јавна класа ДравТхингс {// Ова класа генерише насумично цртане објекте и исцртава их насумичним бојама публиц статиц воид маин (Стринг [] аргс) {Лист л = нев АрраиЛист (); фор (инт и = 0; и0.5) {л.адд (нова линија ()); } елсе {л.адд (нови квадрат ()); }} за (Дравабле д: л) {флоат Х, С, Б; Х = (флоат) Матх.рандом (); С = (флоат) Матх.рандом (); Б = (флоат) Матх.рандом (); Боја ц = Боја.гетХСБЦбоја (Х, С, Б); д.цхоосеЦолор (Стринг.валуеОф (ц)); д. извлачење (); }}} 

Као што ћете видети у примеру, главни метод се може поделити на 2 главна метода, онај који испуњава листу објеката за цртање и онај који исцртава објекте на листи. Позивам вас да користите ове класе и видите како се понашају пре него што пређете на следећи одељак где ћемо видети зашто бисте можда желели да програмирате интерфејс.
На крају, интерфејс је исти као и прави парњак, ваша тастатура и миш су интерфејси са којима комуницирате са рачунаром, унутрашњи детаљи о томе како се ствари попут „Клик“ или „Притисните тастер Есц“ изводе из интерфејс вашег рачунара је скривен од вас и није вам неопходан. Једино што је важно је да можете притиснути тастер Есц и кликнути помоћу тог интерфејса.
Након што сте прегледали шта је интерфејс, надам се да можете схватити колико може бити важно програмирати га. У суштини се фокусирате на креирање својих програма размишљајући о интерфејсу који ћете користити, а не толико о објекту који ће вам бити прослеђен као параметар. У случају примера који смо до сада обрадили, може се преписати на следећи начин:
 импорт јава.авт.Цолор; импорт јава.утил. *; јавна класа ДравТхингс {// Ова класа генерише насумично цртане објекте и исцртава их насумичним бојама публиц статиц воид маин (Стринг [] аргс) {Лист л = нев АрраиЛист (); филлЛист (л); дравЛист (л); } публиц статиц воид филлЛист (Лист л) {фор (инт и = 0; и0.5) {л.адд (нев Лине ()); } елсе {л.адд (нови квадрат ()); }}} публиц статиц воид дравЛист (Лист л) {фор (Дравабле д: л) {флоат Х, С, Б; Х = (флоат) Матх.рандом (); С = (флоат) Матх.рандом (); Б = (флоат) Матх.рандом (); Боја ц = Боја.гетХСБЦбоја (Х, С, Б); д.цхоосеЦолор (Стринг.валуеОф (ц)); д. извлачење (); }}} 

Свакако сам само раздвојио делове главне методе у 2 подређене методе, али лепота је у томе што те 2 методе одржавају независност једна од друге и одржавају независност од имплементација Дравабле интерфејса. Ако желим да променим једну од 2 методе, друга не би била ни најмање погођена, ако би се појавиле имплементације Пентагона и АртВорка, могли бисте их додати у процесу креирања методе филлЛист (Лист л) и дравЛист ( Лист). Л) не би захтевале никакве промене јер је програмирано у интерфејсу.
+ ВажноЧини се да обје методе могу припадати различитим класама, њима се може руковати у различитим окружењима и чак никада не могу знати с којим објектом заиста рукују, али све док имплементирају Дравабле интерфејс моћи ће њиме манипулирати и бити у могућности да изврши 2 методе које су повезане са тим интерфејсом.
Знам да тренутно изгледа страшно компликовано, али касније ћемо видети како Спринг поступа са свиме што је програмирано на интерфејсу, па ћемо чак видети и како ће нам аспектно оријентисано програмирање и разумевање ово много помоћи да разумемо како Спринг функционише.
Надам се да ћемо наставити са овим водичима из недеље у недељу, не заборавите да оставите своје коментаре до следећег пута!Да ли вам се допао и помогао овај водич?Можете наградити аутора притиском на ово дугме да бисте му дали позитиван поен

Ви ће помоћи развој сајта, дељење страницу са пријатељима

wave wave wave wave wave