Uploaded by Unknown Known

arxitektura

advertisement
O‘ZBEKISTON RESPUBLIKASI RAQAMLI TEXNOLOGIYALAR
VAZIRLIGI MUHAMMAD AL-XORAZMIY NOMIDAGI TOSHKENT
AXBOROT TEXNOLOGIYALARI UNIVERSITETI FARG‘ONA FILIALI
Dasturiy injenering va raqamli iqtisodiyot fakulteti
Dasturiy injenering yo‘nalishi
651-21 guruh talabasi G‘anijonov Ibrohimjonning
“Dasturiy ta'minot arxitekturasi”
fanidan tayyorlagan
MUSTAQIL ISHI
Topshirdi:
I.G‘anijonov
Qabul qildi:
M.Asrayev
Farg‘ona 2024
STRUKTURAVIY DIZAYN NAQSHLARI
Strukturaviy dizayn naqshlari dasturiy taminot arxitekturasining muhim
qismidir. Ular obyektlar va klasslararo munosabat va tashkil etishga e’tibor qaratilgan
dasturiy dizayn naqshlaridir. Bu turiy naqshlar dasturiy taminotning kodini yanada
samarali, mantiqiy va qayta ishlatiladigan tuzilma yaratishda ishlatiladi.
Strukturaviy dizayn naqshlari tizimni katta tuzilma uchun turli obyektlar va
klasslarni birga birlashtirishning qanday yo’li bo’lishi haqida g’oya beradi.
Strukturaviy dizaynlardagi naqshlar tizimni kengaytirishga va moslashuvchanligini
oshirishga yordam beradi. Misol uchun, quyidagi strukturaviy dizayn naqshlari
mavjud:
Adapter dizayn
Mijoz kutganiga ko'ra interfeysni boshqasiga moslashtirish.
Ko'prik dizayn
Abstraktsiyani (interfeysni) amalga oshirishdan ajratish.
Kompozit dizayn
Mijozlarga ob'ektlar ierarxiyasi bo'yicha ishlashga ruxsat berish.
Dekorativ dizayn
Ob'ektga dinamik ravishda funksional qo'shish.
Fasad dizayn
Interfeyslar to'plamiga interfeysni taqdim etish.
Flyweight dizayn
Ob'ektni almashish orqali uni qayta ishlatish.
Proksi dizayn
Boshqa ob'ektni ifodalash.
Adapter dizayni
Adapter naqshida aytilishicha, shunchaki "sinf interfeysini mijoz xohlagan
boshqa interfeysga o'zgartiradi". Boshqacha qilib aytganda, boshqa interfeysga ega
bo'lgan sinf xizmatlaridan foydalanganda mijoz talabiga binoan interfeysni ta'minlash.
Adapter namunasi, shuningdek, o'rashchi sifatida ham tanilgan.
Adapter naqshining afzalligi:
Ikki yoki undan ortiq avval mos kelmaydigan ob'ektlarning o'zaro ta'siriga imkon
beradi.
Bu mavjud funksiyalarni qayta ishlatish imkonini beradi.
Adapter namunasidan foydalanish:
Ob'ekt mos kelmaydigan interfeysga ega mavjud sinfdan foydalanishi kerak bo'lganda.
Mos interfeyslarga ega bo'lmagan sinflar bilan hamkorlik qiladigan qayta foydalanish
mumkin bo'lgan sinf yaratmoqchi bo'lganingizda. Mos interfeyslarga ega bo'lmagan
sinflar bilan hamkorlik qiladigan qayta foydalanish mumkin bo'lgan sinf yaratmoqchi
bo'lganingizda.
Adapter namunasi uchun UML:
Adapter namunasi uchun quyidagi texnik xususiyatlar mavjud: Maqsadli interfeys: Bu
mijozlar tomonidan foydalaniladigan kerakli interfeys sinfidir. Adapter klassi: Bu sinf
kerakli maqsadli interfeysni amalga oshiradigan va Adaptee sinfida mavjud bo'lgan
maxsus so'rovni o'zgartiradigan o'rash sinfidir. Adapter klassi: Bu Adapter sinfi
tomonidan mavjud funksiyalarni qayta ishlatish va ularni kerakli foydalanish uchun
o'zgartirish uchun ishlatiladigan sinf. Mijoz: Bu sinf Adapter sinfi bilan o'zaro ishlaydi.
Ko'prik dizayni
Ko'prik naqshida aytilishicha, "funktsional abstraktsiyani amalga oshirishdan
ajratib oling, shunda ikkalasi mustaqil ravishda farq qilishi mumkin". Ko'prik naqshlari
tutqich yoki tana sifatida ham tanilgan.
Ko'prik naqshining afzalligi
Amalga oshirishni interfeysdan ajratish imkonini beradi. U kengayishni
yaxshilaydi. Bu mijozdan amalga oshirish tafsilotlarini yashirishga imkon beradi.
Ko'prik naqshidan foydalanish
Funktsional abstraktsiya va uni amalga oshirish o'rtasida doimiy bog'lanishni
xohlamasangiz. Funktsional abstraktsiyani ham, uni amalga oshirishni ham kichik
sinflar yordamida kengaytirish kerak bo'lganda. U asosan amalga oshirishdagi
o'zgarishlar mijozlarga ta'sir qilmaydigan joylarda qo'llaniladi.AD
Ko'prik naqshiga misol
Quyida keltirilgan UML ko'prik naqshining misolini tasvirlaydi.
Bridge Pattern uchun UML:
Kompozit dizayni
Kompozit namunada aytilishicha, "mijozlarga ob'ektlar ierarxiyasini ifodalashi
mumkin bo'lgan yoki bo'lmasligi mumkin bo'lgan ob'ektlarda umumiy tarzda ishlashga
ruxsat berish".
Kompozit dizayn naqshining afzalligi
U ibtidoiy va murakkab ob'ektlarni o'z ichiga olgan sinf ierarxiyasini belgilaydi.
Bu sizga yangi turdagi komponentlarni qo'shishni osonlashtiradi. Bu boshqariladigan
sinf yoki interfeys bilan strukturaning moslashuvchanligini ta'minlaydi.
Kompozit dizaynidan foydalanish
Ob'ektlarning to'liq yoki qisman ierarxiyasini ifodalamoqchi bo'lganingizda.
Mas'uliyatni boshqa ob'ektlarga ta'sir qilmasdan alohida ob'ektlarga dinamik ravishda
qo'shish kerak bo'lganda. Ob'ektning javobgarligi vaqti-vaqti bilan farq qilishi mumkin
bo'lgan hollarda.
Kompozit naqsh uchun UML
Kompozit naqshda ishlatiladigan elementlar:
Keling, kompost naqshining 4 ta elementini ko'rib chiqaylik.
1) Komponent
Kompozitsiyadagi ob'ektlar uchun interfeysni e'lon qiladi. Tegishli barcha sinflar
uchun umumiy interfeys uchun standart xatti-harakatni amalga oshiradi. O'zining
yordamchi komponentlariga kirish va ularni boshqarish uchun interfeysni e'lon qiladi.
2) Barg
Tarkibdagi barg obyektlarini ifodalaydi. Bargning bolalari yo'q. Kompozitsiyadagi
ibtidoiy ob'ektlar uchun xatti-harakatni belgilaydi.
3) kompozitsion
Bolalarga ega bo'lgan komponentlar uchun xatti-harakatni belgilaydi. Bola
komponentini saqlaydi. Komponent interfeysida bolalar bilan bog'liq operatsiyalarni
amalga oshiradi.
4) mijoz
Komponent interfeysi orqali kompozitsiyadagi ob'ektlarni manipulyatsiya qiladi.
Eslatma: Yuqoridagi umumiy UML ning ish jarayoni quyidagicha. Mijoz kompozitsiya
tarkibidagi ob'ektlar bilan o'zaro aloqa qilish uchun komponentlar sinfi interfeysidan
foydalanadi. Agar qabul qiluvchi varaq bo'lsa, so'rov bevosita ko'rib chiqiladi. Agar
qabul qiluvchi kompozit bo'lsa, u odatda qo'shimcha operatsiyalarni bajarish uchun
so'rovni o'z farzandiga yuboradi.
Kompozit naqsh namunasi
Quyida keltirilgan UML diagrammasi orqali kompozit dizayn namunasini osongina
tushunishimiz mumkin:
Dekorativ dizayni
Dekorator naqshida aytilishicha, shunchaki "ob'ektga dinamik ravishda
moslashuvchan qo'shimcha mas'uliyat yuklang". Boshqacha qilib aytganda, The
Decorator Pattern ish vaqtida ob'ektning funksionalligini kengaytirish uchun meros
o'rniga kompozitsiyadan foydalanadi. Dekorator naqshi, shuningdek, o'rashchi sifatida
ham tanilgan.
Dekorator naqshining afzalligi
Bu statik merosga qaraganda ko'proq moslashuvchanlikni ta'minlaydi. U
ob'ektning kengaytirilishini oshiradi, chunki o'zgarishlar yangi sinflarni kodlash orqali
amalga oshiriladi. Bu ob'ektga barcha xatti-harakatlarni kodlash o'rniga maqsadli
sinflardan bir qator funktsional imkoniyatlarni ishlab chiqishga imkon berish orqali
kodlashni soddalashtiradi.
Dekorator naqshidan foydalanish
Boshqa ob'ektlarga ta'sir qilmasdan ob'ektlarga mas'uliyatni shaffof va dinamik
ravishda qo'shishni xohlaganingizda. Kelajakda o'zgartirishni xohlashingiz mumkin
bo'lgan ob'ektga mas'uliyat qo'shmoqchi bo'lganingizda. Funktsionallikni quyi
sinflarga bo'lish orqali kengaytirish endi amaliy emas.
Dekorator namunasi uchun UML:
Fasad dizayni
Fasad naqshida aytilishicha, shunchaki "quyi tizimdagi interfeyslar to'plamiga
birlashtirilgan va soddalashtirilgan interfeysni taqdim eting, shuning uchun u quyi
tizimning murakkabligini mijozdan yashiradi". Boshqacha qilib aytganda, Fasad
Pattern quyi tizimdan foydalanishni osonlashtiradigan yuqori darajadagi interfeysni
tavsiflaydi. Amalda, har bir abstrakt fabrikasi Fasadning bir turi .
Fasad naqshining afzalligi
U mijozlarni quyi tizim komponentlarining murakkabligidan himoya qiladi. Bu
quyi tizimlar va uning mijozlari o'rtasida bo'sh ulanishni ta'minlaydi.
Fasad naqshidan foydalanish:
Murakkab quyi tizimga oddiy interfeysni taqdim qilmoqchi bo'lganingizda.
Mijozlar va abstraktsiyani amalga oshirish sinflari o'rtasida bir nechta bog'liqliklar
mavjud bo'lganda.AD
Fasad naqshiga misol
Yuqoridagi UML diagrammasi orqali jabha dizayni namunasini tushunamiz.
Fasad naqsh uchun UML:
Flyweight dizayni
Flyweight Pattern faqat "mavjud shunga o'xshash ob'ektlarni saqlash orqali
ularni qayta ishlatish va mos keladigan ob'ekt topilmaganda yangi ob'ekt
yaratish" deydi .
Flyweight Patternning afzalligi
Bu ob'ektlar sonini kamaytiradi.cOb'ektlar barqaror bo'lsa, zarur xotira va
saqlash qurilmalari miqdorini kamaytiradi
Flyweight Pattern dan foydalanish
Ilova ob'ektlar sonini ishlatganda Ob'ektlar miqdori tufayli saqlash narxi yuqori
bo'lganda. Ilova ob'ekt identifikatoriga bog'liq bo'lmaganda.
Proksi dizayni
Oddiy qilib aytganda, proksi boshqa ob'ektni ifodalovchi ob'ektni anglatadi.
GoF ma'lumotlariga ko'ra, proksi-server "asl ob'ektga kirishni boshqarishni
ta'minlaydi". Shunday qilib, biz asl ob'ekt ma'lumotlarini yashirish, talab bo'yicha
yuklash va hokazo kabi ko'plab operatsiyalarni bajarishimiz mumkin. Proksi namunasi
Surrogate yoki Placeholder sifatida ham tanilgan. RMI API proksi dizayn namunasidan
foydalanadi. Stub va Skeleton - bu RMI-da ishlatiladigan ikkita proksi-ob'ekt.
Proksi shablonining afzalligi
Bu asl ob'ektni tashqi dunyodan himoya qilishni ta'minlaydi.
Proksi-serverdan foydalanish: U Virtual Proksi stsenariysida ishlatilishi
mumkin --- Katta hajmdagi tasvirni olish uchun bir nechta ma'lumotlar bazasi
chaqiruvi mavjud bo'lgan vaziyatni ko'rib chiqing. Bu qimmat operatsiya bo'lgani
uchun biz bu erda bir nechta proksi-serverlarni yaratadigan va keyingi ishlov berish
uchun katta hajmdagi xotira iste'mol qiladigan ob'ektga ishora qiladigan proksi-server
namunasidan foydalanishimiz mumkin. Haqiqiy ob'ekt faqat mijoz ob'ektga birinchi
marta so'raganda/kirishganda yaratiladi va shundan so'ng biz ob'ektni qayta ishlatish
uchun proksi-serverga murojaat qilishimiz mumkin. Bu ob'ektning takrorlanishini
oldini oladi va shuning uchun xotirani saqlaydi.
U Himoya proksi stsenariysida ishlatilishi mumkin --- U haqiqiy foydalanuvchi
tegishli tarkibga kirish huquqiga ega yoki yo'qligini tekshirish uchun avtorizatsiya
qatlami sifatida ishlaydi. Masalan, ofisda Internetga kirishni cheklashni ta'minlaydigan
proksi-server. Faqat tegishli veb-saytlar va kontentlarga ruxsat beriladi, qolganlari esa
bloklanadi.
U Remote Proxy stsenariysida ishlatilishi mumkin --- RPC chaqiruvidagi stub
haqida masofaviy proksi-server haqida o'ylash mumkin. Masofaviy proksi-server
boshqa manzilda joylashgan ob'ektning mahalliy ko'rinishini taqdim etadi. Yana bir
misol, veb-xizmat yoki REST resurslari kabi masofaviy resurslar uchun interfeysni
taqdim etishi mumkin.
U Smart Proxy stsenariysida ishlatilishi mumkin --- Aqlli proksi-server ob'ektga
kirishda muayyan harakatlarni joylashtirish orqali qo'shimcha xavfsizlik darajasini
ta'minlaydi. Masalan, boshqa ob'ektlar uni o'zgartira olmasligi uchun unga kirishdan
oldin haqiqiy ob'ekt qulflangan yoki qulflanmaganligini tekshirish.
Proksi namunasi
Yuqoridagi UML diagrammasi orqali proksi-dizayn namunasi misolini
tushunamiz.
Proksi namunasi uchun UML:
Coursera o’quv kursida Front-End dasturchi yo’nalishida sertifikat
Download