На собеседовании, вот в такой постановке, правильный ответ: конкретизируй задачу, если нужен общий ответ - он прост: сделаю так, как проще и быстрее в конкретном случае.Возможно, потом сделаю из это задачи тест на собеседовании.
То же самое, что у @AmdY, только в красивой обёртке, если хочешь. Но суть в том, что ты этот репозиторий на фейковый можешь заменить и прописать это в конфиге окружения верстальщика, ему не нужно будет настраивать ничего, а данные для вёрстки из контроллера приходить будут.Ну просто вы написали пример кодом, а по коду совсем не ясно, где этот User используется.
Если на собеседовании на (еще раз) _теоретическую задачу_ мне начнут говорить про хуяк-хуяк - это значит, что или человек ничего не смыслит или он так привык к решениям практических задач, что не может переключится на теорию - а это верный признак того, что человек остановился в развитии как программист. Дальше уже решу - мне нужен просто хороший исполнитель, или человек, способный развиваться.На собеседовании, вот в такой постановке, правильный ответ: конкретизируй задачу, если нужен общий ответ - он прост: сделаю так, как проще и быстрее в конкретном случае.
Архитектурных астронавтов на йух, работать кто будет?
$UserCollectionA = (new UserCollection)->setDatasource($ConnectorA)->loadAll();
$UserCollectionB = (new UserCollection)->setDatasource($ConnectorB)->loadAll();
$UserCollectionB->diffWith($UserCollectionA)->each(function(User $User) { $User->add(); });
ставит меня в тупика что, вас правда таймауты ожидания, поведение при "все отвалится" и "ожидаемая нагрузка" могут сильно изменить архитектуру.
Угу, что-то такое и ожидал изначально, спасибо. Единственное, в этом случае получается, что с datasource связаны и c UserCollection и c User (что бы делать add()), вот это мне не очень нравится.но если понял, то чего уж там, втупую
Ну вот берем пример fixxer-а и с удовольствием послушаю, какое тут должно быть обеспечение целостности и как он принципиально меняет написанную архитектуру.первое, о чем я подумал - обеспечение целостности
мы 2 года писали распределенные системы, свои API и интеграции с чужими, и вопрос вроде
это может говорить только человек, который никогда не поддерживал интеграцию с синхронизацией состояний
я правильно понимаю, что ты предлагаешь мне взять чужой код и на его примере развлечь тебя историей про обеспечении целостности из моего опыта?Ну вот берем пример fixxer-а и с удовольствием послушаю, какое тут должно быть обеспечение целостности и как он принципиально меняет написанную архитектуру.
Нет, все точно. Считается, что сказав А следует говорить Б. Ну если человек - профессионал, конечно.ты предлагаешь мне взять чужой пример и развлечь тебя историей про обеспечении целостности? ты ничего не напутал?
Я считаю нормальным, что коллекция содержит фабричный метод для item-а коллекции и при создании item-ов инициализирует их своими настройками и зависимостями. Собственно так себя фабрика и должна вести.Угу, что-то такое и ожидал изначально, спасибо. Единственное, в этом случае получается, что с datasource связаны и c UserCollection и c User (что бы делать add()), вот это мне не очень нравится.
$UserCollectionB->diffWith($UserCollectionA)->each(
function(User $User) use ($ConnectorB) { $User->setDatasource($ConnectorB)->add(); }
);
Меня скорее не это напрягает, а то, что про коннектор должны знать две сущности - и коллекция и сам юзер. Появляется лишняя связанность. Может добавлять должна тоже коллекция? Тогда из коллекции у нас получается что-то вроде датамапера.Я считаю нормальным, что коллекция содержит фабричный метод для item-а коллекции и при создании item-ов инициализирует их своими настройками и зависимостями. Собственно так себя фабрика и должна вести.
у юзера нет зависимости от коннектора, только у коллекции, и датамаппера здесь тоже не надоМеня скорее не это напрягает, а то, что про коннектор должны знать две сущности - и коллекция и сам юзер. Появляется лишняя связанность. Может добавлять должна тоже коллекция? Тогда из коллекции у нас получается что-то вроде датамапера.
У @fixxxer была - там юзер знал, как себя добавить. Мое первое решение было аналогичное - юзер знает как достать себя и как добавить. Т.е. аналогично SQL коду в модели. Не скажу, что очень понравилось мне это решение - по-этому стал думать дальше. А из известных мне патернов тут всплывает датамапер только.у юзера нет зависимости от коннектора, только у коллекции