Sobes.tech
Middle+

Kas teil on kogemusi puhta arhitektuuri põhjal tehtud projektidega töötamisel?

sobes.tech AI

Vastus AI-lt

Jah, on:

Puhas arhitektuuri arendades es izmantoju šādus slāņus:

  • Doma slānis: Satur biznesa loģiku un entītijas. Neatkarīgs no citiem slāņiem. Nosaka Use Cases (interaktorus) un repository saskarnes.
  • Datu slānis: Realizē Data Layer repository saskarnes. Ietver darbu ar datiem (tīkls, datu bāzes, SharedPreferences). Bieži tiek izmantoti repository, kas pārveido ārējos datus par domēna entītijām.
  • Prezentācijas slānis: Satur View (Fragment, Activity) un Presenter/ViewModel. Atbild par datu attēlošanu un mijiedarbību ar lietotāju. Sazinās ar Use Cases no Domain Layer.

Slāņu atkarības:

  • Prezentācijas slānis ir atkarīgs no Domain slāņa.
  • Datu slānis ir atkarīgs no Domain slāņa.

Modeles un principi, kas tiek piemēroti tīrā arhitektūrā:

  • SOLID: Īpaši atkarības inversijas princips.
  • Dependency Injection: Testēšanas un atkarību pārvaldības vienkāršošanai (piemēram, ar Dagger, Koin).
  • Repository Pattern: Abstrakcija pār datu avotiem.
  • Use Cases (Interactors): Attēlo konkrētas operācijas biznesa loģikā.

Projekta struktūras piemērs:

├── app
│   ├── build.gradle
│   └── src
│       └── main
│           ├── java
│           │   └── com
│           │       └── example
│           │           └── myapp
│           │               ├── data // Repository realizācijas, datu avoti
│           │               │   ├── datasource
│           │               │   └── repository
│           │               ├── domain // Biznesa loģika, Use Cases, entītijas, repository saskarnes
│           │               │   ├── entity
│           │               │   ├── repository
│           │               │   └── usecase
│           │               └── presentation // View slānis, ViewModel/Presenter
│           │                   ├── ui
│           │                   └── viewmodel
│           └── res

Slāņu mijiedarbība:

  1. View izsauc ViewModel metodi.
  2. ViewModel izsauc atbilstošo Use Case (biznesa loģiku).
  3. Use Case piekļūst Domain Layer saskarnēm.
  4. Data Layer realizācijas (repository) saņem datus no avotiem (tīkls, datu bāze).
  5. Repository pārveido datus par domēna entītijām un atgriež tos Use Case.
  6. Use Case apstrādā datus un atgriež rezultātu ViewModel.
  7. ViewModel atjaunina datus, kas tiek attēloti View.

Tīras arhitektūras izmantošana ļauj:

  • Uzlabot testējamību: Katrs slānis var tikt testēts izolēti.
  • Palielināt uzturēšanu: Izmaiņas vienā slānī minimāli ietekmē citus.
  • Palielināt elastību: Vieglāk aizstāt datu avotu vai UI realizāciju.
  • Samažināt sasaisti: Biznesa loģika ir atdalīta no realizācijas detaļām.