Изучение

Контракты DataSource

Узкие контракты источников и разрешение ровно одной реализации по совместимому типу.

v0.1.0-dev.1Средний уровеньark_data_layer

Контракты DataSource

Предпочитайте отдельный контракт для каждой технической ответственности:

dart
abstract interface class CatalogRemoteDataSource implements DataSource {
  Future<CatalogResponseDto> fetchCatalog();
}

abstract interface class CatalogCacheDataSource implements DataSource {
  Future<CatalogCacheDto?> readCatalog();
  Future<void> writeCatalog(CatalogCacheDto data);
}

DataSourceContainer копирует переданный набор и разрешает зависимости по правилам совместимости типов Dart.

СовпаденияРезультат
0DataSourceNotFoundException
1найденный объект
2 и болееAmbiguousDataSourceException

Явная ошибка неоднозначности не позволяет порядку регистрации незаметно выбирать способ хранения. Если remote и local источники выполняют разные задачи, задайте разные интерфейсы вместо строкового ключа режима.

ARKTELOS

Инженерные системы для программного обеспечения, которое обязано выдерживать нагрузку.