Middle+
Tem deneyiminiz temiz mimariyle gerçekleştirilen projelerde var mı?
sobes.tech yapay zeka
AI'dan gelen yanıt
Evet, var.
Temiz mimari kullanarak geliştirme sırasında aşağıdaki katmanları kullandım:
- Alan Katmanı: İş mantığını ve varlıkları içerir. Diğer katmanlara bağlı değildir. Use Cases (Interactors) ve repository arayüzleri tanımlanır.
- Veri Katmanı: Veri katmanındaki repository arayüzlerini uygular. Veri ile çalışma (ağlar, veritabanları, SharedPreferences) içerir. Sık sık, dış kaynaklardan gelen verileri alan varlıklara dönüştürmek için repositoryler kullanılır.
- Sunum Katmanı: View (Fragment, Activity) ve Presenter/ViewModel içerir. Verilerin gösteriminden ve kullanıcı ile etkileşimden sorumludur. Alan Katmanındaki Use Cases ile iletişim kurar.
Katmanlar arasındaki bağımlılıklar:
- Sunum Katmanı, Alan Katmanına bağlıdır.
- Veri Katmanı, Alan Katmanına bağlıdır.
Temiz mimaride uygulanan desenler ve ilkeler:
- SOLID: Özellikle bağımlılıkların tersine çevrilmesi ilkesi.
- Bağımlılık Enjeksiyonu: Testleri ve bağımlılık yönetimini kolaylaştırmak için (örneğin, Dagger, Koin kullanılarak).
- Repository Deseni: Veri kaynakları üzerinde soyutlama.
- Use Cases (Interactors): İş mantığında belirli işlemleri temsil eder.
Proje yapısına örnek:
├── app
│ ├── build.gradle
│ └── src
│ └── main
│ ├── java
│ │ └── com
│ │ └── ornek
│ │ └── uygulamam
│ │ ├── data // Repository uygulamaları, veri kaynakları
│ │ │ ├── datasource
│ │ │ └── repository
│ │ ├── domain // İş mantığı, Use Cases, varlıklar, repository arayüzleri
│ │ │ ├── entity
│ │ │ ├── repository
│ │ │ └── usecase
│ │ └── presentation // Görünüm katmanı, ViewModel/Presenter
│ │ ├── ui
│ │ └── viewmodel
│ └── res
Katmanlar arasındaki etkileşim:
- Görünüm, ViewModel metodunu çağırır.
- ViewModel, ilgili Use Case'i (iş mantığını) çağırır.
- Use Case, Alan Katmanındaki repository arayüzlerine erişir.
- Repository uygulamaları (Veri Katmanında), kaynaklardan (ağ, veritabanı) veri alır.
- Repositoryler, verileri alan varlıklara dönüştürür ve Use Case'e geri döner.
- Use Case, verileri işler ve sonucu ViewModel'e döner.
- ViewModel, verileri günceller ve View'da gösterir.
Temiz mimari kullanımı şunları sağlar:
- Test edilebilirliği artırmak: Her katman izole şekilde test edilebilir.
- Bakım kolaylığı: Bir katmandaki değişiklikler diğerlerini minimal etkiler.
- Esnekliği artırmak: Veri kaynakları veya UI görünümleri daha kolay değiştirilebilir.
- Bağlantıyı azaltmak: İş mantığını uygulama detaylarından ayırmak.