Sobes.tech
Middle+

Таза архитектура менен ишке ашырылган долбоорлор менен иш тажрыйбасыңыз барбы?

sobes.tech AI

AIден жооп

Ооба, бар:

Таза архитектурада иштеп чыгуу учурунда мен төмөнкү катмардын колдонуп келдим:

  • Домен катмары: Ишкердик логика жана субъекттерди камтыйт. Башка катмардын көз карандысыз. Use Cases (интеракторлор) жана репозиторий интерфейстерин аныктайт.
  • Маалымат катмары: Data Layer-дин репозиторий интерфейстерин ишке ашырат. Маалыматтар менен иштөө (тармак, маалымат базалары, SharedPreferences). Көп учурда репозиторийлер сырткы булактардан алынган маалыматтарды домен субъекттерине айландыруу үчүн колдонулат.
  • Презентация катмары: View (Fragment, Activity) жана Presenter/ViewModel камтыйт. Маалыматтарды көрсөтүү жана колдонуучу менен өз ара аракеттенүү үчүн жооптуу. Domain Layer-деги Use Cases-ке кайрылат.

Катмардын ортосундагы көз карандычылыктар:

  • Презентация катмасы Domain катмасынан көз каранды.
  • Маалымат катмасы Domain катмасынан көз каранды.

Таза архитектурада колдонулган үлгүлөр жана принциптер:

  • SOLID: Айрыкча көз карандычылыктардын инверсия принциби.
  • Dependency Injection: Тестирлөөнү жана көз карандычылыктарды башкарууну жеңилдетүү үчүн (мисалы, Dagger, Koin колдонуу менен).
  • Repository Pattern: Маалымат булактарынын үстүнөн абстракция.
  • Use Cases (Interactors): Ишкердик логикадагы конкреттүү операцияларды көрсөтөт.

Проекттин структурасынын мисалы:

├── app
│   ├── build.gradle
│   └── src
│       └── main
│           ├── java
│           │   └── com
│           │       └── example
│           │           └── myapp
│           │               ├── data // Репозиторийлердин ишке ашырылышы, маалымат булагы
│           │               │   ├── datasource
│           │               │   └── repository
│           │               ├── domain // Ишкердик логика, Use Cases, субъекттер, репозиторий интерфейстерин
│           │               │   ├── entity
│           │               │   ├── repository
│           │               │   └── usecase
│           │               └── presentation // View-слой, ViewModel/Presenter
│           │                   ├── ui
│           │                   └── viewmodel
│           └── res

Катмардын ортосундагы өз ара аракеттенүү:

  1. View ViewModelдин ыкмасын чакырат.
  2. ViewModel тиешелүү Use Case-ди чакырат (ишкердик логика).
  3. Use Case Domain Layer-деги интерфейстерге кайрылар.
  4. Data Layer-деги репозиторийлер сырткы булактардан (тармак, база) маалымат алат.
  5. Репозиторийлер маалыматтарды домен субъекттерине айландырып, Use Case-ге кайтарат.
  6. Use Case маалыматтарды иштетип, натыйжаны ViewModelге кайтарат.
  7. ViewModel маалыматтарды жаңыртып, Viewда көрсөтөт.

Таза архитектураны колдонуу менен мүмкүн:

  • Тестирлөөнү жакшыртуу: Ар бир катмары өзүнчө тестирленет.
  • Күтүүнү жакшыртуу: Бир катмардын өзгөрүүлөрү башка катмарынын аз таасирин тийгизет.
  • Ишке ашыруунун ийкемдүүлүгүн жогорулатуу: Маалымат булагын же UI-нин ишке ашырылышын оңой алмаштыруу.
  • Кыска туташтык: Ишкердик логика менен ишке ашыруу деталдарын бөлүү.