Sobes.tech
Middle

რატომ არის საჭირო თითოეული არქიტექტურული ფენა პროგრამაში?

sobes.tech AI

პასუხი AI-სგან

არქიტექტურული ფენები ეხმარება პასუხისმგებლობების განაწილებაში, პროგრამის მხარდაჭერასა და ტესტირებაში.

  • წარდგენის ფენა: პასუხისმგებელია მომხმარებლის ინტერფეისის ჩვენებაზე და მასთან ურთიერთობაზე. იღებს მონაცემებს დომენის ფენიდან და გარდაქმნის მათ მომხმარებლისთვის გამოსაყენებლად. აგზავნის მომხმარებლის მოქმედებებს დომენის ფენას.
  • დომენის ფენა: შეიცავს პროგრამის ბიზნეს ლოგიკას. არის დამოუკიდებელი UI და ინფრასტრუქტურული დეტალებისგან. მოიცავს სუბიექტებს (Entities), გამოყენების შემთხვევებს (Use Cases) და რეპოზიტორიებს (Repositories) ინტერფეისების სახით.
    • Entities: წარმოადგენს ძირითად ბიზნეს ობიექტებს.
    • Use Cases (Interactors): განსაზღვრავს ურთიერთქმედების სცენარებს პროგრამასთან. ორგანიზებას უწევს რეპოზიტორიებისა და სუბიექტების მუშაობას კონკრეტული დავალებების შესასრულებლად.
    • Repositories (Interfaces): განსაზღვრავს მონაცემების მიღებისა და შენახვის კონტრაქტებს. რეალიზაცია განახორციელებს Data ფენაში.
  • Data ფენა: პასუხისმგებელია მონაცემების მიღებაზე და შენახვაზე. მოიცავს რეპოზიტორიების რეალიზაციებს, მონაცემთა წყაროებს (Data Sources) და მონაცემთა მოდელებს (Models/DTOs).
    • Repository რეალიზაციები: განახორციელებს დომენის ფენაში განსაზღვრულ ინტერფეისებს.
    • Data Sources: უზრუნველყოფს წვდომას სხვადასხვა მონაცემთა წყაროსთან (API, ადგილობრივი ბაზა, გაზიარებული პარამეტრები და ა.შ.).
    • Models (DTOs): წარმოადგენს მონაცემთა ფორმატებს, რომლებიც გამოიყენება მონაცემთა წყაროსთან კომუნიკაციისთვის. განსხვავდება დომენის სუბიექტებისგან.

ფენების სტრუქტურის მაგალითი:

lib/
├── main.dart
├── presentation/
│   ├── widgets/
│   ├── pages/
│   ├── blocs/  // ან სხვა სტატე მენეჯმენტი
├── domain/
│   ├── entities/
│   ├── usecases/
│   ├── repositories/
├── data/
│   ├── repositories/
│   ├── datasources/
│   ├── models/

დამოკიდებულების სქემა:

Presentation Layer -> Domain Layer <- Data Layer. (Data და Presentation დამოკიდებულია Domain-ზე, მაგრამ Domain არავისზე).