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:
- View volá metódu ViewModel.
- ViewModel volá príslušný Use Case (obchodná logika).
- Use Case pristupuje k rozhraniam repository z Domain Layer.
- Implementácie repository (v Data Layer) získavajú dáta zo zdrojov (sieť, databáza).
- Repository pretransformujú dáta na doménové entity a vracajú ich Use Case.
- Use Case spracováva dáta a vracia výsledok ViewModel.
- 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.