Muhammad al xorazmiy nomidagi toshkent axborot texnologiyalri universiteti



Download 141,92 Kb.
bet8/8
Sana31.12.2021
Hajmi141,92 Kb.
#239680
1   2   3   4   5   6   7   8
Bog'liq
311-18 Zokirov Farrux

public interface BearKeeper {

void washTheBear();

void feedTheBear();

void petTheBear();

}

Hayvonot bog'larining qo'riqchilari sifatida biz sevimli ayiqlarni yuvish va boqishdan mamnunmiz. Ammo biz ularni erkalatish xavfini juda yaxshi bilamiz. Afsuski, bizning interfeysimiz juda katta va ayiqni boqish uchun kodni amalga oshirishdan boshqa ilojimiz yo'q.



Buni katta interfeysimizni uchta alohida interfeysga bo'lish orqali tuzatamiz:



public interface BearCleaner {

void washTheBear();

}

public interface BearFeeder {

void feedTheBear();

}

public interface BearPetter {

void petTheBear();

}

Endi, interfeyslarni ajratish tufayli biz faqat o'zimiz uchun muhim bo'lgan usullarni amalga oshiramiz:



public class BearCarer implements BearCleaner, BearFeeder {

public void washTheBear() {

//I think we missed a spot...



} public void feedTheBear() {

//Tuna Tuesdays... }

}

Va nihoyat, xavfli narsalarni beparvo odamlarga topshirishimiz mumkin:



public class CrazyPerson implements BearPetter {

public void petTheBear() {

//Good luck with that!



}

}

Oldinga boradigan bo'lsak, xuddi shu tarzda interfeys ajratishidan foydalanish uchun BookPrinter sinfimizni avvalgi misolimizdan ajratishimiz mumkin. Printer interfeysini bitta bosib chiqarish usuli bilan amalga oshirish orqali biz alohida ConsoleBookPrinter va OtherMediaBookPrinter sinflarini yaratamiz.



Qaramlik inversiyasi

Qaramlik inversiyasining printsipi dasturiy ta'minot modullarini ajratib olishni anglatadi. Shunday qilib, past darajadagi modullarga bog'liq bo'lgan yuqori darajadagi modullar o'rniga, ikkalasi ham abstraktsiyalarga bog'liq bo'ladi.

Buni namoyish etish uchun keling, eski maktabga boramiz va kodi bo'lgan Windows 98 kompyuterini hayotga tatbiq etamiz:

Ammo monitor va klaviaturasiz kompyuterdan nima foyda? Keling, har birimiz yaratgan har bir Windows98Compyuter Monitor va StandardKeyboard bilan to'ldirilgan bo'lishi uchun konstruktorimizga bittadan qo'shaylik:



public class Windows98Machine {

private final StandardKeyboard keyboard;

private final Monitor monitor;

public Windows98Machine() {

monitor = new Monitor();

keyboard = new StandardKeyboard();

}

}

Ushbu kod ishlaydi va biz Windows98Computer sinfimizda StandardKeyboard va Monitor-dan erkin foydalana olamiz.

Muammo hal qilindimi? Yo'q. StandardKeyboard va Monitor-ni yangi kalit so'z bilan e'lon qilish orqali biz ushbu uchta sinfni birlashtirdik.

Bu nafaqat bizning Windows98Compyuterimizni sinovdan o'tkazishni qiyinlashtiradi, balki zarurat tug'ilganda biz StandardKeyboard sinfini boshqasi bilan almashtirish imkoniyatidan mahrum bo'ldik. Va biz Monitor sinfimiz bilan ham bog'lanib qoldik.

Klaviatura interfeysini yanada kengroq qo'shib, buni sinfimizda ishlatib, mashinamizni StandardKeyboard-dan ajratib olaylik:

public interface Keyboard { }

public class Windows98Machine{
private final Keyboard keyboard;

private final Monitor monitor;
public Windows98Machine(Keyboard keyboard, Monitor monitor) {

this.keyboard = keyboard;

this.monitor = monitor;

}

}

Bu erda biz Windows98Machine sinfiga Klaviatura qaramligini qo'shishni osonlashtirish uchun qaramlikni in'ektsiya usulidan foydalanmoqdamiz.

Klaviatura interfeysini Windows98Machine sinfiga kiritish uchun mos keladigan tarzda amalga oshirish uchun StandardKeyboard sinfimizni o'zgartiramiz:

Endi bizning darslarimiz bir-biridan ajratilgan va Klaviatura abstraktsiyasi orqali aloqa qilishadi. Agar xohlasak, biz interfeysni boshqacha tatbiq etish bilan mashinamizdagi klaviatura turini osongina o'chirib qo'yishimiz mumkin. Biz Monitor klassi uchun xuddi shu printsipga amal qilishimiz mumkin.

Zo'r! Biz bog'liqliklarni ajratib oldik va Windows98Machine-ni qaysi sinov doirasi tanlaganimiz bilan sinab ko'rishimiz mumkin.

Xulosa:

Ushbu maqolada biz ob'ektga yo'naltirilgan dizaynning SOLID tamoyillariga chuqur sho'ng'ib chiqdik.



Biz SOLID tarixining tezkor qismidan va ushbu printsiplarning mavjud bo'lish sabablaridan boshladik.

Harflar bilan xat, biz har bir printsipning ma'nosini tezkor kod namunasi bilan buzdik. Keyin biz kodimizni qanday tuzatishni va uni SOLID tamoyillariga rioya qilishni ko'rdik.
Download 141,92 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish