Зависимости между объектом домена, фабрикой и хранилищем

Хорошо, я прочитал много вещей о шаблоне хранилища, включая книгу Фаулера. Я довольно хорошо знаю, что это такое и что он делает, однако я пока не совсем уверен, как его называют фабрики и / или доменные объекты.

Что я понял, так это то, что хранилище должно действовать как коллекция объектов домена в памяти, а фабрика - это класс, отвечающий за создание экземпляра:new myDomainObject()

Имея это в виду, кажется очевидным, что хранилищу понадобится ссылка на фабрику для создания новых объектов из запросов источника данных. (Репозиторий -> Фабрика)

Доменные объекты также нуждаются в ссылке на фабрику для создания новых объектов.

Моя дилемма в том, что когда объект домена хочет получить существующий объект, он должен вызывать rep, ository или factory? Если он вызывает хранилище напрямую (Domain -> Repository -> Factory), то для этого потребуются ссылки на фабрику и хранилище, что мне кажется слишком большим, но так ли это плохо?

С другой стороны, если он называет фабрику какfactory.CreateObjectWithId(id)тогда фабрике придется перенаправить только вызов в хранилищеrepository.GetById(id)и этот последний вызовет другой метод на той же фабрике для создания объекта (если он еще не находится в памяти)factory.CreateObject(dataset)Таким образом, это приводит к циклической ссылке: Доменный объект -> Фабрика <-> Репозиторий, что опять же не кажется мне действительно хорошей вещью.

Так по вашему мнению какой из этих вариантов лучше? или есть другой вариант?

Ответы на вопрос(1)

Ваш ответ на вопрос