Middle+
Təmiz memarlıq ilə həyata keçirilmiş layihələrdə təcrübəniz varmı?
sobes.tech Süni İntellekt
AI-dan cavab
Bəli, var.
Təmiz memarlıq ilə işləyərkən aşağıdakı qatlamlardan istifadə etdim:
- Domen qatlamı: Biznes məntiqi və varlıqları ehtiva edir. O digər qatlamlara bağlı deyil. Use Cases (Interactors) və repository interfeysləri müəyyən edilir.
- Məlumatlar qatlamı: Data Layer-dəki repository interfeyslərini həyata keçirir. Məlumatla işləmə (şəbəkələr, verilənlər bazaları, SharedPreferences) daxildir. Tez-tez, xarici mənbələrdən alınan məlumatları domen varlıqlarına çevirmək üçün repositorylər istifadə olunur.
- Təqdimat qatlamı: View (Fragment, Activity) və Presenter/ViewModel ehtiva edir. Məlumatların göstərilməsi və istifadəçi ilə qarşılıqlı əlaqə üçün məsuliyyət daşıyır. Domain Layer-dən Use Cases ilə əlaqə qurur.
Qatlamalar arasındakı asılılıqlar:
- Təqdimat Layer, Domain Layer-ə bağlıdır.
- Data Layer, Domain Layer-ə bağlıdır.
Təmiz arxitekturada tətbiq olunan naxışlar və prinsiplər:
- SOLID: Xüsusilə, asılılıqların tərs çevrilməsi prinsipi (Dependency Inversion Principle).
- Asılılıqların İnjeksiyası: Testləri və asılılıqları idarə etməyi asanlaşdırmaq üçün (məsələn, Dagger, Koin istifadə etməklə).
- Repository Pattern: Məlumat mənbələri üzərində abstraksiya.
- Use Cases (Interactors): Biznes məntiqində konkret əməliyyatları təmsil edir.
Layihənin strukturuna nümunə:
├── app
│ ├── build.gradle
│ └── src
│ └── main
│ ├── java
│ │ └── com
│ │ └── nümunə
│ │ └── mənimapp
│ │ ├── data // Repositoryların tətbiqləri, məlumat mənbələri
│ │ │ ├── datasource
│ │ │ └── repository
│ │ ├── domain // Biznes məntiqi, Use Cases, varlıqlar, repository interfeysləri
│ │ │ ├── entity
│ │ │ ├── repository
│ │ │ └── usecase
│ │ └── təqdimat // View qatmanı, ViewModel/Presenter
│ │ ├── ui
│ │ └── viewmodel
│ └── res
Qatlamalar arasındakı qarşılıqlı əlaqə:
- Görünüş ViewModel metodunu çağırır.
- ViewModel müvafiq Use Case-i (biznes məntiqi) çağırır.
- Use Case, Domain Layer-dən repository interfeyslərinə daxil olur.
- Repository tətbiqləri (Data Layer-də) mənbələrdən (şəbəkə, verilənlər bazası) məlumat alır.
- Repositorylər məlumatları domen varlıqlarına çevrir və onları Use Case-ə qaytarır.
- Use Case məlumatları işləyir və nəticəni ViewModel-ə qaytarır.
- ViewModel məlumatları yeniləyir və View-də göstərir.
Təmiz arxitektura istifadəsi aşağıdakıları təmin edir:
- Test ediləbilənliyi artırmaq: Hər bir qat izolyasiya edilə bilər.
- Dəstək və baxım asanlığı: Bir qatdakı dəyişikliklər digərinə minimal təsir edir.
- Əlçatanlığı artırmaq: Məlumat mənbələrini və UI nümayişlərini dəyişdirmək daha asandır.
- Bağlantını azaltmaq: Biznes məntiqini tətbiq detallərindən ayırmaq.