Junior
Soyutlamanın özü nedir?
sobes.tech yapay zeka
AI'dan gelen yanıt
Flutter'da soyutlama, genel olarak programlamada olduğu gibi, karmaşık uygulamaları gizlemeye ve etkileşim için basitleştirilmiş bir arayüz sağlamaya indirgenir. Bu, altta yatan detayları gizleyen ve kavramlar üzerinde çalışmaya izin veren yüksek seviyeli görünümler oluşturarak başarılır.
Ana fikirler:
- Detayların gizlenmesi: Karmaşık mantık veya veri yapıları, basit bir arayüzün arkasına gizlenir.
- Kullanımın basitleştirilmesi: Geliştirici, uygulama detaylarına girmeden soyut bir temsil ile etkileşime geçer.
- Esnekliğin artırılması: İç uygulamada yapılan değişiklikler, arayüz değişmediği sürece, onu kullanan kodu etkilemez.
- Yeniden kullanılabilirlik: Soyut bileşenler, uygulamanın farklı bölümlerinde kullanılabilir.
Flutter'daki örnekler:
- Widgetlar: Widgetlar, kullanıcı arayüzü öğeleri üzerinde soyutlamalardır.
Container,Row,Columnve diğerlerini kullanıyoruz, iç uygulama detaylarını bilmeden. - Asenkron programlama:
FutureveStream, asenkron işlemlerle çalışmayı soyutlar, akışlar ve olaylar ile ilgili detayları gizler. - Mimari desenler: BLoC, Provider veya Riverpod gibi desenlerin kullanımı, UI ve iş mantığını ayıran bir soyutlama biçimidir.
Soyutlama kullanan kod örneği:
// Veri kaynağı için soyut sınıf
abstract class DataSource {
Future<String> fetchData();
}
// HTTP kullanan uygulama
class HttpDataSource implements DataSource {
@override
Future<String> fetchData() async {
// HTTP isteği ile ilgili karmaşık mantık burada
return "HTTP'den veriler";
}
}
// Yerel depolama kullanan uygulama
class LocalDataSource implements DataSource {
@override
Future<String> fetchData() async {
// Yerel depolama ile ilgili karmaşık mantık burada
return "Yerel depolamadan veriler";
}
}
// DataSource soyutlamasını kullanan sınıf
class Repository {
final DataSource dataSource;
Repository(this.dataSource);
Future<String> getData() {
return dataSource.fetchData();
}
}
Bu örnekte, Repository sadece DataSource soyutlamasıyla etkileşir, verilerin nereden geldiğiyle ilgilenmez (HTTP, yerel depolama vb.). Bu, veri kaynağını kolayca değiştirmeye olanak tanır, Repository kodunu değiştirmeden.