Sobes.tech
Middle

Miks on iga arhitektuurkiht rakenduses vajalik?

sobes.tech AI

Vastus AI-lt

Arhitektuuri kihid aitavad jagada vastutust, parandada rakenduse hooldatavust ja testitavust.

  • Esitluskiht: Vastutab kasutajaliidese kuvamise ja sellega suhtlemise eest. Saab andmeid Domain kihilt ja muudab need kasutajale esitatavaks. Saadab kasutaja tegevused Domain kihile.
  • Domain kiht: Sisaldab rakenduse äriloogikat. On sõltumatu UI ja infrastruktuuri detailidest. Sisaldab subjekte (Entities), kasutusjuhtumeid (Use Cases) ja hoidlaid (Repositories) liideste kujul.
    • Entities: Esindavad põhitegevusobjekte.
    • Use Cases (Interactors): Määratlevad suhtluse stsenaariumid rakendusega. Koordineerivad hoidlate ja subjektide tööd konkreetsete ülesannete täitmiseks.
    • Repositories (Interfaces): Määratlevad andmete saamise ja salvestamise lepingud. Teostus toimub Data kihis.
  • Data kiht: Vastutab andmete saamise ja salvestamise eest. Sisaldab hoidlate teostusi, andmeallikaid (Data Sources) ja andmemudeleid (Models/DTOs).
    • Repository teostused: Teostavad Domain kihis määratletud liideseid.
    • Data Sources: Pakuvad juurdepääsu erinevatele andmeallikatele (API, kohalik andmebaas, jagatud seaded jms).
    • Models (DTOs): Esindavad andmeformaate, mida kasutatakse andmeallikatega suhtlemisel. Erinevad Entities-st Domain kihis.

Näide kihtide struktuurist:

lib/
├── main.dart
├── presentation/
│   ├── widgets/
│   ├── pages/
│   ├── blocs/  // või muu oleku haldamise süsteem
├── domain/
│   ├── entities/
│   ├── usecases/
│   ├── repositories/
├── data/
│   ├── repositories/
│   ├── datasources/
│   ├── models/

Sõltuvuste skeem:

Presentation Layer -> Domain Layer <- Data Layer. (Data ja Presentation sõltuvad Domain-ist, kuid Domain ei sõltu kellestki).