JavaRush /Kurslar /All lectures for UZ purposes /Xulq-atvoriy patternlar

Xulq-atvoriy patternlar

All lectures for UZ purposes
Daraja, Dars
Mavjud

Iterator

Iterator — xulq-atvoriy dizayn pattern. Bu aggregat obyektlarining elementlariga ketma-ket kirish imkonini beruvchi obyektni ifodalaydi, har bir aggregatlangan obyektni tasvirlashsiz.

Iterator

Masalan, daraxt, bog'langan ro'yxat, hash-jadval va massiv kabi elementlar Iterator obyekti yordamida ko'rib chiqilishi (va o'zgartirilishi) mumkin.

Elementlarni ko'rib chiqish iterator obyekti tomonidan amalga oshiriladi, kolleksiya o'zi emas. Bu interfeys va kolleksiya ishlab chiqilishini soddalashadi, shuningdek, vazifalarni mantiqiyroq taqsimlashni ta'minlaydi.

To'liq amalga oshirilgan iteratorning xususiyati shundaki, iteratorni ishlatadigan код iteratsiya qilinadigan aggregat turini bilishi shart emas.

Bu yondashuv juda tez-tez ishlatiladi. Misol uchun, sen SQL bazasiga so'rov yuborasan va javob sifatida u senga iteratorni qaytaradi (SQL terminlarida uni odatda kursor deb atashadi). Va sen olingan iterator yordamida SQL-javobdan birma-bir qatorlarni olishing mumkin.

Command

Command (Komanda) — xulq-atvoriy dizayn pattern, obyektga yo'naltirilgan dasturlashda harakatni ifodalaydi. Komanda obyekti o'zi harakatni va uning parametrlarini o'z ichiga oladi.

Команда (Command)

Biror metodni chaqirish uchun odatda kerak bo'ladi:

  • obyektga havola
  • metod nomi (metodga havola)
  • metod parametrlarining qiymatlari
  • qo'llaniladigan obyektlarni o'z ichiga olgan kontekstga havola

Bu barcha ma'lumotlarni bitta obyektga — Komandaga (command) qadoqlash kerak.

Lekin hali hammasi emas: chunki komandani biror kimsa bajarishi kerak. Shunday qilib, bu pattern tarkibiga yana to'rtta sub'ekt kiradi: komandalar (command), komandani qabul qiluvchi (receiver), komandani chaqiruvchi (invoker) va mijoz (client).

Command obyekti qabul qiluvchi haqida biladi va qabul qiluvchining metodini chaqiradi. Qabul qiluvchi parametrlarining qiymatlari komandada saqlanadi. Invoker obyekti komandani qanday bajarishni va ehtimol bajarilgan komandalarni hisob-kitob qilish va yozib qo'yishni biladi. Invoker obyekti hech qanday aniq komanda haqida bilmaydi, u faqat interfeys haqida biladi.

Har ikki obyekt (chaqiruvchi obyekt va bir nechta komanda obyektlari) client obyektiga tegishli. Client qaysi komandalarni va qachon bajarishga qaror qiladi. Komandani bajarish uchun u komandani chaqiruvchi obyektga (invoker) uzatadi.

Komanda obyektlaridan foydalanish umumiy komponentlarni qurishni soddalashtiradi, bu komponentlarni delegatsiya qilish yoki metodni chaqirishda istalgan vaqtda sinf metodlarini yoki metod parametrlarini bilmasdan bajarishga imkon beradi.

Invoker obyekti hisob-kitob uslubini bilmasdan komandalarni hisoblashga imkon beradi (bu hisob, masalan, komandalarni bekor qilish va qayta ishlashni amalga oshirish uchun foydali bo'lishi mumkin).

Masalan, sen bir программани yozyapsan, bu dastur turli xil vazifalarni jadval asosida bajarishga imkon beradi. Bir tomondan, sening dasturing topshiriqlarni hisob-kitob qiladi va boshqaradi, boshqa tomondan, unda bir nechta ijrochilar bo'lishi mumkin, ularning har biri o'z turining komandalarini bajarishni biladi. Masalan, SMS yuborish, email yuborish, Telegram orqali xabar yuborish va hokazo.

Observer

Kuzatuvchi (Observer) — xulq-atvoriy dizayn pattern. Bu sinf mexanizmini amalga oshiradi, bu sinf obyekti boshqa ob'yektlarning holatidagi o'zgarishlardan xabardor bo'lish imkonini beradi va ularga kuzatib borish imkonini beradi.

Наблюдатель (Observer)

Boshqa sinflar kuzatayotgan sinflar sub'ektlar (Subjects) deb nomlanadi va kuzatuvchi sifatida ro'yxatdan o'tuvchi sinflar kuzatuvchilar (Observers) deb nomlanadi.

Observer patternini amalga oshirishda odatda quyidagi sinflar ishlatiladi:

  • Observable — kuzatuvchilarni qo'shish, o'chirish va xabar berish uchun metodlarni belgiluvchi interfeys;
  • Observer — kuzatuvchini xabardor qilish orqali interfeys;
  • ConcreteObservable — Observable interfeysini amalga oshiruvchi aniq sinf;
  • ConcreteObserver — Observer interfeysini amalga oshiruvchi aniq sinf.

Observer patterni tizimda ishlatiladi, agar:

  • hech bo'lmaganda bitta xabarlarni tarqatuvchi ob'ekt mavjud bo'lsa;
  • kamida bitta xabar qabul qiluvchi mavjud bo'lib, ularning soni va tarkibi ilova ish vaqtida o'zgarishi mumkin;
  • interaktiv sinflarning kuchli bog'lanishini oldini olish imkonini beradi.

Bu pattern xabarlarni tarqatuvchi, xabarlar bilan nima qilishiga qiziqmasa, ma'lumotga ega bo'lgan vaziyatlarda tez-tez qo'llaniladi.

Visitor

Mehmon (Visitor) — xulq-atvoriy dizayn pattern, boshqa sinflar ob'ektlari ustida bajariladigan operatsiyani tavsiflaydi. Visitorni o'zgartirganda qaramog'idagi sinflarni o'zgartirishga hojat yo'q.

Pattern, ikki marta dispetcherlik orqali turi yo'qolgan ma'lumotni qayta tiklashning klassik usulini ko'rsatadi, pastga olib tushish holdan foydalanmasdan.

Посетитель (Visitor)

Bir qator obyektlar ustida ba'zi bog'langan bo'lmagan operatsiyalarni amalga oshirish kerak, lekin ularning kodini ifloslanmay. Har bir tugunning turini so'rash va kerakli turga ishora qilishdan oldin olib tashlashga yoki iloji bo'lmasligi yoki bo'lmasligi kerak.

Patternni ishlatish kerak, agar:

  • turli interfeysdagi turli sinflarning obyektlari mavjud bo'lsa, lekin ular ustida sinf turiga qarab operatsiyalarni amalga oshirishingiz kerak bo'lsa;
  • struktura ustida turli xil muammoli operatsiyalarni bajarish zarur bo'lsa;
  • struktura ustida tez-tez yangi operatsiyalar qo'shish kerak bo'lsa.

Mediator

Vositachi (Mediator) — xulq-atvoriy dizayn pattern, bir-biri bilan bevosita bog'lanmasdan, ko'plab ob'ektlarning o'zaro ta'sirini ta'minlaydi, ularni bir-biriga ta'sir qilmasdan qiladi.

Посредник (Mediator)

Pattern Mediator ko'plab ob'ektlarning o'zaro ta'sirini ta'minlashga imkon beradi, ularni bir-biriga aniq bog'lanmasdan va kam bog'liqlikni shakllantirishdan xalos qiladi.

Vosita Hamkori obyektlari bilan ma'lumot almashish interfeysini belgilaydi, Aniq vosita Hamkori obyektlarining harakatlarini muvofiqlashtiradi.

Har bir Hamkor sinf o'zining Vosita ob'ektini biladi va barcha Hamkorlar faqat vositachi bilan ma'lumot almashadi, agar u bo'lmasa, ular bevosita ma'lumot almashishlari kerak bo'lardi.

Hamkorlar Vositachiga so'rovlar yuboradi va so'rovlarni undan oladi. Vosita har bir so'rovni bitta yoki bir nechta Hamkorlarga yo'naltiradi.

Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION