Feature-based
- Dart kursu
- Uzman
- Ders 32/47
- 5 dk
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.
Başlangıç kodu
void main() {
// Feature sınıfını tanımla (name, files alanları; describe metodu)
// bir auth özelliği yarat; describe ile yazdır
}Örnek çözüm
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());
}Beklenen çıktı
feature: auth (2 files)
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Özellik import'u
import 'features/____/auth_service.dart';
import 'features/auth/auth_service.dart';
Açıklama: auth özelliği kendi klasöründe toplanır.
2 Feature-based yapıda her klasör ne içerir?
- Kendi model, servis ve arayüzünü Doğru cevap
- Yalnızca modelleri
- Yalnızca testleri
- Yalnızca yapılandırma dosyalarını
Açıklama: her özellik klasörü tüm parçalarını bir arada tutar.
3 Özellik parçalarını eşleştir
| Kavram | Anlamı |
|---|---|
features/auth |
Kimlik özelliği |
features/cart |
Sepet özelliği |
auth_service.dart |
Servis dosyası |
login_page.dart |
Arayüz dosyası |