Изучение

Repository и доменные интерфейсы

Разделение переиспользуемого базового Repository и бизнес-контракта, принадлежащего Domain.

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

Repository и доменные интерфейсы

Доменному интерфейсу не требуется расширять Repository<Data>:

dart
abstract interface class CatalogRepository {
  CatalogData get data;
  Stream<CatalogData> get stream;
  Future<void> synchronize();
}

Реализация Data-слоя объединяет оба отношения:

dart
final class CatalogRepositoryImpl extends Repository<CatalogData>
    implements CatalogRepository {
  // Политика преобразования и координации источников.
}

Repository<Data> хранит одно актуальное значение. setData заменяет его, а updateData выполняет синхронное преобразование. Каждый явный commit публикуется, даже если новое значение равно предыдущему.

Для Data предпочтительны неизменяемые бизнес-снимки. Базовый класс не может запретить изменяемому объекту поменять себя после публикации.

ARKTELOS

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