Dasturlashda Patternlar. (1-qism)

03.04.2026 | Muallif: Jaxongir a.k.a | Kategoriya: Patternlar & SOLID | 6 daqiqa o'qish
Dasturlashda Patternlar. (1-qism)

Pattern nima?

Bu — dastur arxitekturasini yaratishda tez-tez uchraydigan muammolarning tayyor yechimi.

O'zbekchasiga tarjima qilsa andoza bo'ladi. Tushunarli bo'lishi uchun texnik tilda yozib ketaman.

Patternlar g'oyasi dastlab qurilish arxitekturasidan kirib kelgan (Kristofer Aleksander). Dasturlashda esa 1994-yilda to'rt nafar muallif (Gamma, Helm, Johnson, Vlissides) tomonidan yozilgan "Design Patterns: Elements of Reusable Object-Oriented Software" kitobi inqilob qildi. Hozirda bu kitob soha mutaxassislari orasida qisqacha "GoF book" deb ataladi.

Ko'pchilik algoritm bilan adashtiradi.Patternni tayyor kod kabi copy-paste qilib bo'lmaydi.

  • Algoritmdan farqi: Algoritm — bu aniq ketma-ketlik (oshpazlik retsepti kabi). Pattern esa — yuqori darajadagi chizma (muhandislik chizmasi kabi). Siz chizmaga qarab binoni qurasiz, lekin g'ishtni qanday qo'yishni vaziyatga qarab o'zingiz hal qilasiz.

Patternning nimalardan tashkil topadi

Har bir paternlar quyidagi qismlardan iborat bo'ladi:

  • pattern qaysi muammoni yechim bo'ladi

  • pattern taklif qilayotgan usulga bo'lgan motivatsiya,nega aynan shu usulda muammoni yechish kerak.

  • yechimlar sinfini strukturasi

  • biror dasturlash tilidagi realizatsiya namunasi

  • turli kontekstlarda amalga oshirishning o'ziga xos xususiyatlari

  • boshqa patternlar bilan aloqasi

Patternlar klasifikatsiyasi

Patternlar loyihalanayotgan tizimni qamrab olishi,murakkablik darajasiga ko'ra farqlanadi. Eng quyi va oddiy patternlar bu idiomalardir.Ularni faqat bitta dasturlash tili doirasida ishlatish mumkin.

Eng universal esa arxitektura patternlari,ularni har qanday dasturlash tilida ishlatsa bo'ladi.

Patternlar asosan 3 ta katta guruhga bo'linadi:

Pattern guruh nomi

Tavsifi

Misol

Creational (object creation)

Hosil qiluvchi

Moslashuvchanlikni oshirish va mavjud koddan qayta foydalanishga qaratilgan obyekt yaratish mexanizmlari bilan bog'liq

Singleton, Factory Method, Builder

Structural (class/object composition)

Strukturali (Tuzilmaviy)

Obyektlar va sinflarni moslashuvchan va samarali saqlash bilan birga ularni kattaroq tuzilmalarga qanday yig'ishni tushuntiradi

Adapter, Facade, Proxy

Behavioral (object interaction and responsibility)

Xulq-atvor

Obyektlar o'rtasidagi aloqani boshqaradi, mas'uliyatni taqsimlaydi va ularning birgalikda yaxshi ishlashini ta'minlaydi

Observer, Strategy, State

Obyektlar o'rtasidagi bog'lanish

Yana muhim bilishimiz kerak bo'lgan narsa obyetklar o'rtasidagi bog'lanish.

1. Bog‘liqlik (Dependency) — "Vaqtinchalik aloqa"

Bu eng asosiy va eng kuchsiz aloqa turi. Agar A klassi B klassidan foydalansa (masalan, metod ichida lokal o‘zgaruvchi sifatida yoki parametr sifatida), bu bog‘liqlikdir.

  • Belgisi: UMLda chiziqli shtrixli strelka (- - ->).

  • Mohiyati: "Menga bu obyekt faqat bir ishni bajarish uchun qisqa muddatga kerak".

2. Assotsiatsiya (Association) — "Doimiy aloqa"

Bu bog‘liqlikning kuchliroq varianti. Bunda bir obyekt ikkinchisini "biladi" va u bilan doimiy aloqada bo‘ladi (odatda maydon/field sifatida saqlaydi).

  • Belgisi: UMLda oddiy tutash strelka (———>).

  • Mohiyati: "Men bu obyektni taniyman va u haqida ma'lumotga egaman".

3. Agregatsiya (Aggregation) — "Qismlardan tashkil topish"

Bu assotsiatsiyaning maxsus turi bo‘lib, "butun va qism" munosabatini ifodalaydi. Eng muhim jihati: qismlar butun obyekt o‘lganidan keyin ham yashashda davom etishi mumkin.

  • Misol: Universitet va Professor. Universitet yopilsa ham, professor boshqa joyda ishlashi mumkin.

  • Belgisi: UMLda ichi bo‘sh romb (<>———>).

  • Mohiyati: "Men bir nechta qismlardan iboratman, lekin ular mensiz ham mavjud bo‘la oladi".

4. Kompozitsiya (Composition) — "Qattiq bog‘liqlik"

Agregatsiyadan farqi shundaki, qismlarning hayot sikli butun obyektga bog‘liq. Butun obyekt yo‘q qilinsa, qismlar ham yo‘q bo‘ladi.

  • Misol: Uy va Xonalar. Uy buzilsa, xonalar ham yo‘q bo‘ladi.

  • Belgisi: UMLda ichi bo‘yalgan romb (<◆>———>).

  • Mohiyati: "Men qismlardan iboratman va ularning hayotiga men javobgarman".

Bog‘liqlik: A sinf B sinfdagi o‘zgarishlarga ta’sir qilishi mumkin.

• Assotsiatsiya: A obyekti B obyekti haqida biladi. A sinfi bog‘liqdan B.

• Agregatsiya: A obyekt B obyekt haqida biladi va undan iborat. A sinf B ga bog‘liq.

• Kompozitsiya: A obyekt B obyekt haqida biladi, undan tashkil topgan va uning hayot siklini boshqaradi. A sinf B ga bog‘liq. Amalga oshirish: A sinfi e’lon qilingan usullarni belgilaydi

B interfeysi orqali ko‘rish mumkin. A obyektlarni interfeysi B. A sinfi B ga bog‘liq.

• Vorislik: A sinfi interfeys va amalga oshirishni meros qilib oladi B sinfga kiradi, lekin uni qayta belgilashi mumkin. A obyektlar mumkin B sinfi interfeysi orqali ko‘rib chiqish mumkin. A sinfi dan B.

Dasturlashda Patternlar. (1-qism)

Keyingi mavzularda Frameworklardan tanish bo'lgan Singelton,Factory,Builder va boshqa patternlarni asosiy turlari haqida gaplashamiz.