0

Использование архитектуры, управляемой доменом, где созданы объекты или объекты простого значения?где создавать простые объекты/объекты объекта? DDD

Например, если мне нужно создать простой объект значения в классе службы, я бы просто вызвал новый оператор класса класса объекта, связав его с классом службы?

Может ли новый оператор быть вызван в классе обслуживания в соответствии с проектом, управляемым доменом?

Эти объекты ценности нельзя вводить через контейнер DI, и они не гарантируют использование фабрики из-за их простоты.

+1

Что с этим связано с доменным дизайном? Ваш вопрос непонятен. Почему бы вам не стимулировать ценности в классах, где они актуальны? Покажите нам какой-нибудь код и/или примеры. –

+0

Непонятно. Я отредактирую его. Но я хочу иметь слабо связанную конструкцию, поэтому я не могу создать экземпляр непосредственно в методе, который их использует, мне нужно будет передать их. Поэтому мне нужно знать, где их создавать, если они являются основными объектами, а не сложные агрегаты, которые требуют использования фабрики. – Bojs

ответ

3

Что случилось с копированием их непосредственно из их конструктора?

Обычно вам нужны только фабрики, когда процесс создания экземпляра является сложным или когда вы хотите избавить клиента от выбора конкретного класса.

Однако, поскольку вездесущий язык имеет решающее значение для DDD, довольно распространено, что агрегат будет иметь фабричные методы для создания других агрегатов, к которым они относятся. Использование

var task = project.addTask(...); 

Это было бы выразить «задачи могут быть добавлены к проектам»:

Например, вместо того, порождая задачи проекта из воздуха, как показано ниже:

var task = new Task(projectId, ...); 

Вы могли бы сделать лучше, за счет необходимости загрузки агрегата Project.

+0

Я хочу знать, где создавать простые объекты значений. Я знаю, что они могут быть созданы из репозитория и переданы клиентом приложения, но как насчет того, когда мои службы должны создавать свои собственные? Как мне это сделать без жесткой связи классов? Если они настолько просты, что фабрика будет излишней, тогда где я их создам? Они не могут быть введены через контейнер DI, потому что они являются объектами ценности. – Bojs

+0

@Bojs Я действительно не понимаю, о чем вы говорите, где? Вы просто создаете их там, где они вам нужны. То, что вы просите, - это то же самое, что и в случае, когда я создаю строки, целые числа, даты и т. Д. В приложении ... это не имеет смысла. Очевидно, вы будете тесно связаны с VO. – plalx

+0

является то, что стандартная практика в соответствии с доменным дизайном? есть ли какие-либо ссылки, которые вы можете поделиться с онлайн-материалами? – Bojs

Смежные вопросы