Sobes.tech
Middle+

Ar turite patirties dirbant su projektų, įgyvendintų naudojant švarią architektūrą?

sobes.tech AI

Atsakymas iš AI

Taip, yra:

Švarios architektūros kūrimo metu naudojausi šiais sluoksniais:

  • Domeno sluoksnis: Apima verslo logiką ir subjektus. Nėra priklausomas nuo kitų sluoksnių. Apibrėžia Use Cases (interaktorius) ir repository sąsajas.
  • Duomenų sluoksnis: Įgyvendina Data Layer repository sąsajas. Apima darbą su duomenimis (tinklas, duomenų bazės, SharedPreferences). Dažnai naudojami repository, kurie konvertuoja išorinius duomenis į domeno subjektus.
  • Prezentacijos sluoksnis: Apima View (Fragment, Activity) ir Presenter/ViewModel. Atsakingas už duomenų rodymą ir sąveiką su vartotoju. Kreipiasi į Use Cases iš Domain Layer.

Sluoksnių priklausomybės:

  • Prezentacijos sluoksnis priklauso nuo Domain sluoksnio.
  • Duomenų sluoksnis priklauso nuo Domain sluoksnio.

Naudoti modeliai ir principai:

  • SOLID: Ypač priklausomybės inversijos principas.
  • Dependency Injection: Testavimo ir priklausomybių valdymo palengvinimui (pvz., naudojant Dagger, Koin).
  • Repository Pattern: Abstrakcija virš duomenų šaltinių.
  • Use Cases (Interactors): Atstovauja konkrečias operacijas verslo logikoje.

Pavyzdinė projekto struktūra:

├── app
│   ├── build.gradle
│   └── src
│       └── main
│           ├── java
│           │   └── com
│           │       └── example
│           │           └── myapp
│           │               ├── data // Repository įgyvendinimai, duomenų šaltiniai
│           │               │   ├── datasource
│           │               │   └── repository
│           │               ├── domain // Verslo logika, Use Cases, subjektai, repository sąsajos
│           │               │   ├── entity
│           │               │   ├── repository
│           │               │   └── usecase
│           │               └── presentation // View sluoksnis, ViewModel/Presenter
│           │                   ├── ui
│           │                   └── viewmodel
│           └── res

Sluoksnių sąveika:

  1. View kviečia ViewModel metodą.
  2. ViewModel kviečia atitinkamą Use Case (verslo logika).
  3. Use Case pasiekia Domain Layer sąsajas.
  4. Repository įgyvendinimai (Data Layer) gauna duomenis iš šaltinių (tinklas, duomenų bazė).
  5. Repository konvertuoja duomenis į domeno subjektus ir grąžina juos Use Case.
  6. Use Case apdoroja duomenis ir grąžina rezultatą ViewModel.
  7. ViewModel atnaujina duomenis, kurie rodomi View.

Naudojant švarią architektūrą galima:

  • Pagerinti testavimą: Kiekvienas sluoksnis gali būti testuojamas izoliuotai.
  • Padidinti palaikymą: Pakeitimai viename sluoksnyje minimaliai veikia kitus.
  • Padidinti lankstumą: Lengviau keisti duomenų šaltinių ar UI įgyvendinimus.
  • Sumažinti priklausomybę: Verslo logika atskirta nuo įgyvendinimo detalių.