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 არავისზე).