Sobes.tech
Middle+

Máte skúsenosti s projektmi realizovanými na čistej architektúre?

sobes.tech AI

Odpoveď od AI

Áno, existuje.

Pri vývoji na čistej architektúre som použil nasledujúce vrstvy:

  • Domain vrstva: Obsahuje obchodnú logiku a entity. Nezávisí od iných vrstiev. Určuje Use Cases (interaktory) a rozhrania repository.
  • Data vrstva: Implementuje rozhrania repository z Data Layer. Zahŕňa prácu s dátami (sieť, databázy, SharedPreferences). Často sa používajú repository na prevod dát z externých zdrojov na doménové entity.
  • Presentation vrstva: Obsahuje View (Fragment, Activity) a Presenter/ViewModel. Je zodpovedná za zobrazovanie dát a interakciu s používateľom. Volá Use Cases z Domain Layer.

Závislosti medzi vrstvami:

  • Presentation vrstva závisí od Domain vrsty.
  • Data vrstva závisí od Domain vrsty.

Vzory a princípy používané v čistej architektúre:

  • SOLID: Obzvlášť princíp inverzie závislostí (Dependency Inversion Principle).
  • Dependency Injection: Na zjednodušenie testovania a riadenia závislostí (napríklad pomocou Dagger, Koin).
  • Repository Pattern: Abstrakcia nad zdrojmi dát.
  • Use Cases (Interactors): Predstavujú konkrétne operácie v obchodnej logike.

Príklad štruktúry projektu:

├── app
│   ├── build.gradle
│   └── src
│       └── main
│           ├── java
│           │   └── com
│           │       └── example
│           │           └── myapp
│           │               ├── data // Implementácie repository, zdroje dát
│           │               │   ├── datasource
│           │               │   └── repository
│           │               ├── domain // Obchodná logika, Use Cases, entity, rozhrania repository
│           │               │   ├── entity
│           │               │   ├── repository
│           │               │   └── usecase
│           │               └── presentation // View-vrstva, ViewModel/Presenter
│           │                   ├── ui
│           │                   └── viewmodel
│           └── res

Interakcia medzi vrstvami:

  1. View volá metódu ViewModel.
  2. ViewModel volá príslušný Use Case (obchodná logika).
  3. Use Case pristupuje k rozhraniam repository z Domain Layer.
  4. Implementácie repository (v Data Layer) získavajú dáta zo zdrojov (sieť, databáza).
  5. Repository pretransformujú dáta na doménové entity a vracajú ich Use Case.
  6. Use Case spracováva dáta a vracia výsledok ViewModel.
  7. ViewModel aktualizuje dáta, ktoré sa zobrazujú vo View.

Používanie čistej architektúry umožňuje:

  • Zlepšiť testovateľnosť: Každý vrstva môže byť testovaná izolovane.
  • Zvýšiť udržiavateľnosť: Zmeny v jednej vrstve majú minimálny vplyv na ostatné.
  • Zvýšiť flexibilitu: Jednoduchšie je nahradiť implementácie zdrojov dát alebo UI.
  • Znížiť závislosť: Oddelenie obchodnej logiky od detailov implementácie.