Поток нескольких экземпляров магазина
В приложении потока, где данные делятся на сегменты по идентификатору владельца, следует ли нам использовать одно хранилище, которое внутренне разделяет данные на сегменты, или один экземпляр хранилища для каждого сегмента?
Например, у нас есть пользователь приложения, который является тренером для нескольких спортсменов. У каждого тренированного спортсмена есть ноль или более тренировок, и тренер может просматривать тренировки одного или нескольких спортсменов одновременно.
У нас может быть один тренировочный магазин для всех спортсменов; хранилище должно гарантировать, что все данные разделены на сегменты атлетов, и для каждого метода хранилища требуется параметр athleteId.
Или мы могли бы иметь один экземпляр магазина на идентификатор спортсмена. Это упрощает логику хранилища и сигнатуры методов, но тогда нам нужно управлять большим количеством экземпляров хранилища.
У кого-нибудь есть опыт с этим подходом? Есть ли плюсы или минусы в том или ином случае? Или какой путь "поток потока" и почему?
1 ответ
Путь Flux - создавать синглтон-магазины. Они не являются моделями, так как мы привыкли думать о моделях в шаблоне MVC в стиле ORM. Хранилища создаются только в момент инициализации приложения. Они управляют "доменом" логики и данных.
Эти одиночные хранилища регистрируют обратный вызов у диспетчера. Обратный вызов - единственный способ, которым данные попадают в хранилища. Хранилища также предоставляют методы-получатели в качестве общедоступного API - единственного способа получения данных. Нет сеттеров. Магазины представляют собой собственную вселенную, полностью контролирующую свои данные и поведение.
В вашем случае это выглядит так, как будто логическими доменами являются Athlete и Workout, поэтому я бы создал AthleteStore и WorkoutStore и сохранял бы коллекции этих двух вещей в своих соответствующих магазинах. Я полагаю, у вас будут как добытчики getWorkoutsByAthleteID()
, например.