Sobes.tech
Middle+

Máte zkušenosti s projekty realizovanými na čisté architektuře?

sobes.tech AI

Odpověď od AI

Ano, van.

A tiszta architektúrában történő fejlesztés során a következő rétegeket használtam:

  • Domain réteg: Tartalmazza az üzleti logikát és az entitásokat. Nem függ más rétegektől. Meghatározza a Use Case-eket (interaktőröket) és a repository interfészeket.
  • Data réteg: Megvalósítja a Data Layer repository interfészeit. Magában foglalja az adatokkal való munkát (hálózat, adatbázisok, SharedPreferences). Gyakran használnak repository-kat az adatok külső forrásokból történő átalakítására domain entitásokká.
  • Prezentációs réteg: Tartalmazza a View-t (Fragment, Activity) és a Presenter/ViewModel-t. Feladata az adatok megjelenítése és a felhasználóval való interakció. A Domain Layer-ből hívja a Use Case-eket.

Rétegek közötti függőségek:

  • A prezentációs réteg a domain rétegtől függ.
  • Az adat réteg a domain rétegtől függ.

A tiszta architektúrában alkalmazott minták és elvek:

  • SOLID: Különösen a függőség fordított elve (Dependency Inversion Principle).
  • Dependency Injection: A tesztelés egyszerűsítése és a függőségek kezelése érdekében (pl. Dagger, Koin használatával).
  • Repository minta: Absztrakció az adatforrások felett.
  • Use Cases (Interactors): Konkrét műveleteket képviselnek az üzleti logikában.

Projekt struktúrájának példája:

├── app
│   ├── build.gradle
│   └── src
│       └── main
│           ├── java
│           │   └── com
│           │       └── example
│           │           └── myapp
│           │               ├── data // A repository-k megvalósításai, adatforrások
│           │               │   ├── datasource
│           │               │   └── repository
│           │               ├── domain // Üzleti logika, Use Cases, entitások, repository interfészek
│           │               │   ├── entity
│           │               │   ├── repository
│           │               │   └── usecase
│           │               └── presentation // View-szint, ViewModel/Presenter
│           │                   ├── ui
│           │                   └── viewmodel
│           └── res

A rétegek közötti interakció:

  1. A View meghívja a ViewModel metódusát.
  2. A ViewModel meghívja a megfelelő Use Case-t (üzleti logika).
  3. A Use Case hozzáfér a Domain Layer repository interfészeihez.
  4. A repository-k (a Data Layer-ben) adatokat szereznek a forrásokból (hálózat, adatbázis).
  5. A repository-k az adatokat domain entitásokká alakítják és visszaadják a Use Case-nek.
  6. A Use Case feldolgozza az adatokat és visszaadja az eredményt a ViewModel-nek.
  7. A ViewModel frissíti az adatokat, amelyek a View-n jelennek meg.

A tiszta architektúra alkalmazásával lehetőség nyílik:

  • A tesztelhetőség javítására: Minden réteg izoláltan tesztelhető.
  • A karbantarthatóság növelésére: Egy réteg változásai minimálisan befolyásolják a többit.
  • A rugalmasság növelésére: Könnyebben cserélhetők az adatforrások vagy a UI megjelenítése.
  • A kapcsolódás csökkentésére: Az üzleti logika elválasztása a megvalósítás részleteitől.