Поток нескольких экземпляров магазина

В приложении потока, где данные делятся на сегменты по идентификатору владельца, следует ли нам использовать одно хранилище, которое внутренне разделяет данные на сегменты, или один экземпляр хранилища для каждого сегмента?

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

У нас может быть один тренировочный магазин для всех спортсменов; хранилище должно гарантировать, что все данные разделены на сегменты атлетов, и для каждого метода хранилища требуется параметр athleteId.

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

У кого-нибудь есть опыт с этим подходом? Есть ли плюсы или минусы в том или ином случае? Или какой путь "поток потока" и почему?

1 ответ

Решение

Путь Flux - создавать синглтон-магазины. Они не являются моделями, так как мы привыкли думать о моделях в шаблоне MVC в стиле ORM. Хранилища создаются только в момент инициализации приложения. Они управляют "доменом" логики и данных.

Эти одиночные хранилища регистрируют обратный вызов у ​​диспетчера. Обратный вызов - единственный способ, которым данные попадают в хранилища. Хранилища также предоставляют методы-получатели в качестве общедоступного API - единственного способа получения данных. Нет сеттеров. Магазины представляют собой собственную вселенную, полностью контролирующую свои данные и поведение.

В вашем случае это выглядит так, как будто логическими доменами являются Athlete и Workout, поэтому я бы создал AthleteStore и WorkoutStore и сохранял бы коллекции этих двух вещей в своих соответствующих магазинах. Я полагаю, у вас будут как добытчики getWorkoutsByAthleteID(), например.

Другие вопросы по тегам