Что означает клиент в шаблоне репозитория DDD? - PullRequest
3 голосов
/ 07 марта 2020

Я быстро прочитал книгу «Управление через домен».
Теперь я достиг шаблона хранилища.

Я не уверен, на что они ссылаются, упоминая «Клиента»?
Что означает здесь «Клиент»?

Базы данных являются частью инфраструктуры. Плохое решение для клиента , чтобы знать детали, необходимые для доступа к базе данных. Например, клиент должен создать SQL запросов для извлечения желаемых данных. Запрос к базе данных может возвращать набор записей, раскрывая еще больше своих внутренних деталей. Когда многим клиентам приходится создавать объекты непосредственно из базы данных, оказывается, что такой код разбросан по всему домену.

1 Ответ

4 голосов
/ 07 марта 2020

Клиент репозитория - это фрагмент кода (другой класс), обычно прикладного уровня в контексте DDD / Onion Architecture. Практическое правило гласит: 1 хранилище на совокупность Root. Если ваш Агрегат Root - это Order, который содержит коллекцию OrderItem внутри, вы создаете только OrderRepository и возвращаете обратно весь Order с ВСЕМИ OrderItems, без отложенной загрузки. Теперь ваш клиент (код уровня приложения) не должен знать, что находится внутри репозитория (он основан на файлах, sql, основан на http), вы рассматриваете его как коллекцию памяти: repository.GetById (orderId), где репозиторий - IOrderRepository. , Это означает, что вы можете легко изменить свое хранилище в памяти на sql и обратно в любое время, и ваш клиентский код (прикладной уровень) или любой другой класс, который использует хранилище, не будет затронут, следовательно, принцип подстановки Лискова сохраняется.

...