Dart
Feature-based
Feature-based mimari öğrenirsin.
Feature-based
Feature-based yapı, kodu katmana göre değil özelliğe göre düzenler. Her özellik klasörü kendi modellerini, servislerini ve arayüzünü barındırır.
Örnek: lib/features/auth/ içinde login_page.dart, auth_service.dart, user_model.dart bir arada durur. Özellik dışa aktarılmadan başka özellikler içeriğini doğrudan kullanamaz.
Avantaj: bir özelliği silmek veya taşımak tek bir klasörü içerir. Özellikler arası bağımlılık azalır; ekip çalışması kolaylaşır. Her özellik kendi testlerini de içerir.
Özellik izolasyonu
Özellikler birbirleriyle doğrudan import yerine, iyi tanımlanmış arayüzler üzerinden konuşur. Bu, bir özelliğin iç yapısını değiştirdiğinde diğerlerinin etkilenmemesini sağlar.
Örnek: cart özelliği auth özelliğinin AuthService arayüzünü kullanır; iç implementasyonunu değil. Bu, auth'ü yeniden yazmayı güvenli yapar.
İyi izole edilmiş özellikler taşınabilir ve test edilebilirdir. Bir özelliği ayrı bir pakete çıkarmak da kolaylaşır; başka projelerde yeniden kullanılabilir.
Uygulama Feature sınıfı tanımla
Bir Feature sınıfı tanımla: final String name; final List<String> files; Feature(this.name, this.files); String describe() => 'feature: $name (${files.length} files)';. main içinde final auth = Feature('auth', ['login_page.dart', 'auth_service.dart']); yarat ve print(auth.describe()); ekle.
Örnek çözümü göster
class Feature {
final String name;
final List<String> files;
Feature(this.name, this.files);
String describe() => 'feature: $name (${files.length} files)';
}
void main() {
final auth = Feature('auth', ['login_page.dart', 'auth_service.dart']);
print(auth.describe());
}
Kendini test et
-
Özellik import'u
import 'features/____/auth_service.dart';
Cevabı göster
import 'features/auth/auth_service.dart';
-
Feature-based yapıda her klasör ne içerir?
- Kendi model, servis ve arayüzünü
- Yalnızca modelleri
- Yalnızca testleri
- Yalnızca yapılandırma dosyalarını
Cevabı göster
Kendi model, servis ve arayüzünü — her özellik klasörü tüm parçalarını bir arada tutar.
-
Özellik parçalarını eşleştir
- features/auth
- Kimlik özelliği
- features/cart
- Sepet özelliği
- auth_service.dart
- Servis dosyası
- login_page.dart
- Arayüz dosyası
Sıradaki ders: Repository