Sobes.tech
Middle

Kodėl kiekvienas architektūros sluoksnis yra reikalingas programoje?

sobes.tech AI

Atsakymas iš AI

Architektūros sluoksniai padeda padalinti atsakomybę, pagerinti programos palaikymą ir testavimą.

  • Prezentacijos sluoksnis: Atsakingas už vartotojo sąsajos rodymą ir sąveiką su ja. Gaukia duomenis iš Domain sluoksnio ir juos paverčia vartotojui parodyti. Siunčia vartotojo veiksmus į Domain sluoksnį.
  • Domain sluoksnis: Laiko programos verslo logiką. Yra nepriklausomas nuo UI ir infrastruktūros detalių. Apima subjektus (Entities), naudojimo atvejus (Use Cases) ir saugyklas (Repositories) kaip sąsajas.
    • Entities: Atstovauja pagrindinius verslo objektus.
    • Use Cases (Interactors): Apibrėžia sąveikos scenarijus su programa. Koordinuoja saugyklų ir subjektų darbą konkretiems užduotims atlikti.
    • Repositories (Interfaces): Apibrėžia duomenų gavimo ir saugojimo sutartis. Implementacija yra Data sluoksnyje.
  • Data sluoksnis: Atsakingas už duomenų gavimą ir saugojimą. Apima saugyklų įgyvendinimus, duomenų šaltinius (Data Sources) ir duomenų modelius (Models/DTOs).
    • Repository įgyvendinimai: Įgyvendina Domain sluoksnyje apibrėžtas sąsajas.
    • Data Sources: Teikia prieigą prie įvairių duomenų šaltinių (API, vietinė duomenų bazė, bendri nustatymai ir kt.).
    • Models (DTOs): Atstovauja duomenų formatą, naudojamą sąveikai su duomenų šaltiniais. Skiriasi nuo Entities Domain sluoksnyje.

Sluoksnių struktūros pavyzdys:

lib/
├── main.dart
├── presentation/
│   ├── widgets/
│   ├── pages/
│   ├── blocs/  // arba kita būsenų valdymo sistema
├── domain/
│   ├── entities/
│   ├── usecases/
│   ├── repositories/
├── data/
│   ├── repositories/
│   ├── datasources/
│   ├── models/

Priklausomybių schema:

Presentation Layer -> Domain Layer <- Data Layer. (Data ir Presentation priklauso nuo Domain, bet Domain niekam nepriklauso).