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

  1. Görünüm, ViewModel metodunu çağırır.
  2. ViewModel, ilgili Use Case'i (iş mantığını) çağırır.
  3. Use Case, Alan Katmanındaki repository arayüzlerine erişir.
  4. Repository uygulamaları (Veri Katmanında), kaynaklardan (ağ, veritabanı) veri alır.
  5. Repositoryler, verileri alan varlıklara dönüştürür ve Use Case'e geri döner.
  6. Use Case, verileri işler ve sonucu ViewModel'e döner.
  7. 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.