Sobes.tech
Junior

За какво са нужни случаите във Flutter?

sobes.tech AI

Отговор от AI

Случаите на употреба (use cases) представляват слой на бизнес логиката, отделен от UI и данните. Те описват конкретни действия на потребителя или системата, които се изпълняват с данни, получени от репозитории.

Предимства на използването на случаи на употреба:

  • Чистота и модулност: Отделянето на бизнес правилата от UI прави кода по-разбираем и по-лесен за поддръжка.
  • Тестване: Бизнес логиката, инкапсулирана в случаите на употреба, е лесна за тестване изолирано.
  • Повторна употреба: Случаите на употреба могат да бъдат използвани в различни части на приложението или дори в други приложения.
  • Четливост: Имената на случаите на употреба често отразяват намерението на потребителя или системата, което подобрява четливостта на кода.

Обикновено случаите на употреба:

  • Зависят от едно или повече репозитории за получаване на данни.
  • Извършват операции върху тези данни (например филтриране, сортиране, преобразуване).
  • Не знаят за UI и не взаимодействат с него директно.
  • Използват се от презентатори или доставчици на състояние (например, BLoC, Riverpod).

Пример за структура на случай на употреба:

// Абстрактен базов клас за случаи на употреба, които връщат бъдещи стойности.
abstract class FutureUseCase<T, P> {
  Future<T> call(P params);
}

// Конкретен случай на употреба за получаване на списък с потребители.
class GetUsersUseCase extends FutureUseCase<List<User>, NoParams> {
  final UserRepository userRepository;

  GetUsersUseCase(this.userRepository);

  @override
  Future<List<User>> call(NoParams params) async {
    return await userRepository.getUsers();
  }
}

// Клас без параметри за случаи на употреба, които не изискват входни данни.
class NoParams {}