Sobes.tech
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ə:

  1. Görünüş ViewModel metodunu çağırır.
  2. ViewModel müvafiq Use Case-i (biznes məntiqi) çağırır.
  3. Use Case, Domain Layer-dən repository interfeyslərinə daxil olur.
  4. Repository tətbiqləri (Data Layer-də) mənbələrdən (şəbəkə, verilənlər bazası) məlumat alır.
  5. Repositorylər məlumatları domen varlıqlarına çevrir və onları Use Case-ə qaytarır.
  6. Use Case məlumatları işləyir və nəticəni ViewModel-ə qaytarır.
  7. 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.