Dart
Birleştirme
Tüm katmanları birleştirerek çalışan bir mini servis yazarsın.
App sınıfı ile birleştirme
Son adımda tüm parçaları birleştiririz. App sınıfı, bir TaskService alır ve summary() yöntemiyle tüm hizmetlerin özetini döndürür. Bu, bağımlılık enjeksiyonunun son halkasıdır.
Örnek: class App { final TaskService svc; App(this.svc); String summary() { return 'Birleştirme: ${svc.list().length} görev, fib(10): ${fib(10)}'; } }. App, servis ve hesap fonksiyonunu bir araya getirir. main içinde App(InMemoryTaskService()) ile oluşturulur. Bu proje zincirinde Shelf API, sqflite veritabanı ve Isolate hesabını aynı arabirim altında topladık; her parça bir öncekinin üzerine eklendi.
summary yöntemi
summary() yöntemi, uygulamanın durumunu tek bir dize olarak döndürür. svc.list().length ile görev sayısını, fib(10) ile hesap sonuçunu birleştirir. Bu, entegrasyonun doğrulandığı noktadır.
Örnek: String summary() { return 'Birleştirme: ${svc.list().length} görev, fib(10): ${fib(10)}'; }. main içinde print(app.summary()) ile yazdırılır. Çıktı Birleştirme: 1 görev, fib(10): 55 olur. Bu deterministiktir; her çalıştırmada aynı sonuçu verir. Proje boyunca kurduğumuz katmanlar (model, servis, API, veritabanı, isolate) burada tek bir özette birleşir.
Uygulama App sınıfı ve birleştirme
class App yaz; içinde final TaskService svc alanı, App(this.svc) kurucusu ve String summary() yöntemi olsun. summary içinde return 'Birleştirme: ${svc.list().length} görev, fib(10): ${fib(10)}'; yap. main içine final app = App(InMemoryTaskService()); ve print(app.summary()) ekle.
Örnek çözümü göster
import 'package:shelf/shelf.dart';
import 'package:shelf_router/shelf_router.dart';
import 'package:sqflite/sqflite.dart';
import 'dart:isolate';
class Task {
final int id;
final String title;
Task({required this.id, required this.title});
}
abstract class TaskService {
List<Task> list();
}
class InMemoryTaskService implements TaskService {
@override
List<Task> list() => [Task(id: 1, title: 'görev 1')];
}
Response taskHandler(Request req, TaskService svc) {
return Response.ok('görevler: ${svc.list().length}');
}
class SqliteTaskService {
final Database db;
SqliteTaskService(this.db);
Future<List<Task>> all() async {
final rows = await db.query('tasks');
return rows.map((r) => Task(id: r['id'] as int, title: r['title'] as String)).toList();
}
}
int fib(int n) {
if (n < 2) return n;
return fib(n - 1) + fib(n - 2);
}
Future<int> heavyCompute(int n) {
return Isolate.run(() => fib(n));
}
class App {
final TaskService svc;
App(this.svc);
String summary() {
return 'Birleştirme: ${svc.list().length} görev, fib(10): ${fib(10)}';
}
}
void main() {
final app = App(InMemoryTaskService());
print(app.summary());
}
Kendini test et
-
App servis alanı
class App {
final ____ svc;
App(this.svc);
}
Cevabı göster
class App {
final TaskService svc;
App(this.svc);
}
-
Birleştirme parçalarını eşleştir
- App
- Uygulama
- summary
- Özet
- TaskService
- Servis
- fib
- Fibonacci
-
App.summary ne yapar?
- Şifreler
- Sıkıştırır
- Özet döndürür
- Serileştirir
Cevabı göster
Özet döndürür — App.summary uygulamanın özetini döndürür.
Sıradaki ders: İleri seviye bölüm sınavı