CodeBlanks Logo Icon CodeBlanks

Clean architecture

Clean architecture prensiplerini öğrenirsin.

Clean architecture

Clean architecture, kodu katmanlara ayırır: sunum (presentation), alan (domain) ve veri (data). Bağımlılıklar daima içe — alan katmanına — doğru akar.

Alan katmanı (Entity, Repository arayüzü) hiçbir şeye bağımlı değildir. Veri katmanı (DataSource) alan arayüzünü uygular. Sunum katmanı alanı çağırır, veriyi doğrudan kullanmaz.

Bu ayrım, veri kaynağını (API, veritabanı, önbellek) değiştirmeyi kolaylaştırır. Testte sahte (mock) bir repository verilir; alan mantığı değişmez.

Katman ayrımı

Üç temel katman: Entity (alan modeli, iş mantığı), Repository (veri erişim sözleşmesi), DataSource (somut veri kaynağı).

Sunum katmanı bir UseCase çağırır; UseCase repository'yi kullanır; repository bir DataSource'tan veri okur. Her katman yalnızca bir alt katmanla konuşur.

Bu zincir, tek bir değişikliğin tüm sistemi etkilemesini önler. Örneğin API'den veritabanına geçiş sadece DataSource değişikliği yapar; alan ve sunum dokunulmaz.

Uygulama Entity ve Repository tanımla

Bir UserEntity sınıfı tanımla: final String id; final String name; UserEntity(this.id, this.name);. Bir abstract class UserRepository tanımla: UserEntity fetch(String id); metodu. main içinde final user = UserEntity('1', 'Ayşe'); yarat ve print(user.name); ekle.

Başlangıç kodu

main.dart
void main() {
  // UserEntity sınıfını tanımla (id, name alanları)
  // abstract UserRepository tanımla (fetch metodu)
  // bir UserEntity yarat; name yazdır
}

Örnek çözüm

main.dart
class UserEntity {
  final String id;
  final String name;
  UserEntity(this.id, this.name);
}

abstract class UserRepository {
  UserEntity fetch(String id);
}

void main() {
  final user = UserEntity('1', 'Ayşe');
  print(user.name);
}

Beklenen çıktı

Ayşe

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Clean architecture'de bağımlılık hangi yöne akar?

  • Dışa doğru
  • Aşağı doğru
  • Yukarı doğru
  • İçe doğru (alan katmanına) Doğru cevap

Açıklama: bağımlılıklar daima içe, alan katmanına doğru akar.

2 Repository arayüzü

Soru
____ class UserRepository {
  UserEntity fetch(String id);
}
Cevap
abstract class UserRepository {
  UserEntity fetch(String id);
}

Açıklama: abstract class ile bir sözleşme tanımlanır.

3 Katmanları eşleştir

Kavram Anlamı
Entity Alan modeli
Repository Veri erişim sözleşmesi
DataSource Veri kaynağı
UseCase İş kuralı

Uzman bölümündeki tüm dersler