Я недавно рассматривал шаблон хранилища как способ очистить все детали упорства под ковром, где речь идет о клиентском коде. Во время чтения вокруг появляется, что репозиторий является/может быть [обычно?] Ответственным за агрегаты, а не просто прямолинейными классами.Агрегаты и хранилища. Как определить агрегаты?
Это имеет смысл для меня, как вы могли бы иметь класс определения сообщения и другое определение Комментарии. Это делает идеальный кандидат для совокупности, поскольку эти два очень тесно связаны между собой. Однако как бы я представлял пользователей класс и его отношения с его или ее Должности?
ли смысл агрегировать пользователей с сообщений/Комментарии агрегат, или держать USers сам по себе и просто иметь ассоциацию с помощью хорошей старомодной ссылки?
Я попытался найти ответ самостоятельно с помощью Google, но многие примеры, которые я нахожу, просто автономны. т.е. Должности/комментарии или, может быть, Заказ и OrderLine и т. д. Я не могу найти ничего, что показывало бы, как другие связанные классы подходят друг другу.
Я не применяю это к чему-либо конкретному, хотя PHP или Java/C#, вероятно, будут областью, в которой я хотел бы использовать эти идеи. В любом случае я просто изучаю и пытаюсь разгадать некоторые из этих идей и концепций, прежде чем убегу и создаю монстра. :)
Спасибо за ваше время.
А я понимаю. Если один объект полностью зависит от другого, имеет смысл объединить их. Таким образом, комментарии не могут существовать без сообщений. Хотя, я думаю, вам нужно рисовать линию в некоторых местах. Удаление пользователя не обязательно означает, что их сообщения/комментарии исчезают, и даже если они это делают, имеет смысл иметь пользователей как отдельный объект. В качестве небольшого аспекта, где логическое место для размещения фактического SQL для запроса базы данных [или любого другого механизма, который я использую для сохранения)? Будет ли это в Репозитории или Агрегатах ... или даже ниже?Спасибо за помощь! – Etzeitet
Вы поняли. Репозиторий * действует *, как если бы он был в памяти, но реализован для перехода в хранилище данных. Это означает, что в интерфейсе репозитория нет упоминания о доступе к SQL или данным, но реализация выполняется, это ваша абстракция. –