Sobes.tech
Middle+

Təmiz memarlıq haqqında nə deyə bilərsiniz?

sobes.tech Süni İntellekt

AI-dan cavab

Təmiz Arxitektura (Clean Architecture), Robert Martin ("Uncle Bob") tərəfindən populyarlaşdırılmışdır və kodun təşkilatı üçün prinsiplər to'plamidir, bu prinsiplər elastik, test qilinadigan va oson qo'llab-quvvatlanadigan tizim yaratishga qaratilgan.

Asosiy g'oyalar:

  1. Qavatlarga bo'linish: Kod doira shaklida bo'linadi, ichki doiralar biznes mantiqini, tashqi doiralar esa amalga oshirish tafsilotlarini o'z ichiga oladi (UI, ma'lumotlar bazalari, tashqi API lar).
  2. Ichki qatlamlarga bog'liqlik: Tashqi qatlamlar ichki qatlamlarga bog'liq, ammo aksincha emas. Bu bog'liqliklarni teskari bog'liqlik prinsipi bilan erishiladi.
  3. Inkapsulyatsiya: Har bir qatlam o'z amalga oshirish tafsilotlarini tashqi qatlamlardan yashiradi.
  4. Test qilish imkoniyati: Markaziy qatlamda joylashgan biznes mantiq tashqi tafsilotlardan mustaqil bo'lib, uni ajralib test qilish oson.
  5. Frameworklardan mustaqillik: Asosiy biznes qoidalari aniq framework, UI yoki ma'lumotlar bazalariga bog'liq emas.

Qavatlar (misol):

  • Entities: Biznes ob'ektlar va qoidalarni o'z ichiga oladi (masalan, User klassi va foydalanuvchi bilan bog'liq biznes mantiq).
  • Use Cases (Interactors): Biznes mantiqni maxsus ilova uchun saqlaydi (masalan, GetUserUseCase). U Entities va Gateway Interfaces o'rtasidagi o'zaro ta'sirni boshqaradi.
  • Interface Adapters: Tashqi manbalardan olingan ma'lumotlarni Use Cases va Entities uchun tushunarli formatga moslashtiradi (masalan, UI uchun Presenters, ma'lumotlar bazalari uchun Gateway Implementations).
  • Frameworks & Drivers: Tashqi qatlam, frameworklar (UI, ma'lumotlar bazalari, veb-xizmatlar) ni o'z ichiga oladi.

Bog'liqliklarni teskari qilish prinsipi muhim rol o'ynaydi. Ichki qatlamlar interfeyslarni (Gateway Interfaces) belgilaydi, tashqi qatlamlar esa bu interfeyslarni amalga oshiradi. Quyidagi sxemada ko'rsatilgan:

+-----------------+      +-------------------+      +--------------------+      +------------------------+
| Frameworks &    |----->|   Interface       |<-----|    Use Cases       |<-----|        Entities          |
| Drivers (UI, DB)|      |   Adapters        |      |  (Interactors)     |      |      (Business Rules)    |
+-----------------+      |  (Presenters,     |      |                    |      +------------------------+
                         |  Gateway Impls)   |      |                    |
                         +-------------------+      +--------------------+

Tugmalar bog'liqlik yo'nalishini ko'rsatadi. Barcha bog'liqliklar ichki tomonga, Entities qatlamiga yo'naltirilgan.

Android ishlab chiqishda Toza Arxitektura ko'pincha quyidagi komponentlar bilan amalga oshiriladi:

  • UI Layer (Prezentatsiya): Activity, Fragment, ViewModel, UI Logika. Dependent on Domain Layer.
  • Domain Layer (Use Cases): Ilova biznes mantiqi. Boshqa qatlamlardan mustaqil.
  • Data Layer: Ma'lumot manbalari (tarmoqlar, ma'lumotlar bazalari), repository lar. Domain Layer da belgilangan interfeyslarni amalga oshiradi.

Misol uchun struktura:

root
├── app
│   ├── src
│   │   └── main
│   │       └── java
│   │           └── com
│   │               └── example
│   │                   └── myapp
│   │                       ├── prezentatsiya  // UI Layer (ViewModel, Activities, Fragments)
│   │                       │   ├── ui
│   │                       │   └── viewmodel
│   │                       ├── domen
│   │                       │   ├── entitiy
│   │                       │   ├── repository  // Domain Interfaces
│   │                       │   └── usecase
│   │                       └── data        // Data Layer (Repositories, Data Sources, Mappers)
│   │                           ├── local       // Local Data Source (Room)
│   │                           ├── remote      // Remote Data Source (Retrofit)
│   │                           ├── mapper
│   │                           └── repository  // Data Implementations extending Domain Interfaces
│   └── build.gradle
└── build.gradle

Afzalliklari:

  • Test qilish imkoniyati: Biznes mantiq izolyatsiya qilingan va oson test qilinadi.
  • Moslashuvchanlik: Tashqi bog'liqliklarni oson o'zgartirish mumkin (masalan, Room dan Realm ga o'tish).
  • Qo'llab-quvvatlash: Aniq mas'uliyat bo'linishi kodni tushunish va qo'llab-quvvatlashni osonlashtiradi.
  • Texnologiyadan mustaqillik: Biznes mantiqi Android framework yoki kutubxonalar bilan bog'liq emas.

Kamchiliklari:

  • Murakkablik: Dastlabki tushunish va amalga oshirish uchun qiyin bo'lishi mumkin, ayniqsa kichik loyihalar uchun.
  • Ko'proq kod: Ko'proq sinflar va interfeyslar yozishni talab qiladi, oddiyroq arxitekturalarga qaraganda.

Umuman olganda, Təmiz Arxitektura — bu o'rtacha va katta murakkablikdagi Android ilovalarini yaratishda kuchli yondashuv bo'lib, biznes mantiqiga asoslangan va texnik tafsilotlardan ko'ra muhimroq bo'lgan loyihalar uchun mos keladi.