Dart
Özet - Mimari
clean, repository ve DI'yi birleştirerek bir mimari iskelet yazarsın.
Özet - Mimari
Bu grupta Dart mimarisini öğrendik: clean architecture (katman ayrımı), feature-based (özellik bazlı düzen), repository (veri erişim soyutu), dependency injection (bağımlılık enjeksiyonu), SOLID (tasarım ilkeleri).
Temel: bağımlılıklar içe akar; alan katmanı hiçbir şeye bağımlı değildir. Repository veri kaynağını gizler; DI arayüze bağımlılığı sağlar. SOLID, değiştirilebilir ve test edilebilir kodun temelidir.
Bu desenler birlikte çalışır: clean architecture çerçeveyi, feature-based organizasyonu, repository veri katmanını, DI bağımlılık yönetimini, SOLID ise sınıf tasarımını belirler.
Uygulama Özet: entity + repository + container
Bir Order sınıfı tanımla: final String id; final int total; Order(this.id, this.total);. Bir abstract class OrderRepository tanımla: Order find(String id);. Bir class MockOrderRepo implements OrderRepository tanımla: @override Order find(String id) => Order(id, 250);. Bir class Container tanımla: final Map<String, dynamic> _items = {}; void register(String key, dynamic item) => _items[key] = item; T resolve<T>(String key) => _items[key] as T;. main içinde final c = Container(); yarat; c.register('repo', MockOrderRepo()); çağır; final repo = c.resolve<OrderRepository>('repo');; final order = repo.find('ord-1'); ve print('${order.id}: ${order.total}'); ekle.
Örnek çözümü göster
class Order {
final String id;
final int total;
Order(this.id, this.total);
}
abstract class OrderRepository {
Order find(String id);
}
class MockOrderRepo implements OrderRepository {
@override
Order find(String id) => Order(id, 250);
}
class Container {
final Map<String, dynamic> _items = {};
void register(String key, dynamic item) => _items[key] = item;
T resolve<T>(String key) => _items[key] as T;
}
void main() {
final c = Container();
c.register('repo', MockOrderRepo());
final repo = c.resolve<OrderRepository>('repo');
final order = repo.find('ord-1');
print('${order.id}: ${order.total}');
}
Kendini test et
-
Repository + DI birlikte ne sağlar?
- Test edilebilir, değiştirilebilir tasarım
- Daha az kod satırı
- Daha hızlı arayüz
- Otomatik kod üretimi
Cevabı göster
Test edilebilir, değiştirilebilir tasarım — Repository soyutlar, DI enjekte eder; birlikte test edilebilirlik sağlar.
-
Mimari kavramları eşleştir
- Entity
- Alan modeli
- Repository
- Sözleşme
- Container
- DI kapsayıcı
- Feature
- Modül
-
Repository arayüzü
____ class OrderRepository { }
Cevabı göster
abstract class OrderRepository { }
Sıradaki ders: Integration test