Я также хотел бы, чтобы это был простой способ определения, является ли ваша новая модель Entity
или ValueObject
?
Лично я использую следующий вопрос:
Так что, используя ее в качестве примера, модель Person
зависит от нашей области (логика / бизнес), история ее FirstName
собственность может иметь значение или нет.если это так, то Person
равно Entity
.
С другой стороны, мы должны иметь возможность установить updatable = false
для наших ValueObject
свойств.и когда необходимо обновление, просто мы можем удалить предыдущую запись и вставить новую [1].
Что касается других ваших вопросов, я думаю, что одна из величайших вещей в DDD - это изоляция логики в уровне предметной области / модели.,«Простые POJO, которые легко тестируются».Поэтому не стесняйтесь добавлять любую логику в свой домен / модель настолько, насколько вы можете unit-test их с легкостью.
Я надеюсь, что мой ответ был своего рода полезным, и, пожалуйста, дайте мне знатьесли вы найдете что-то более удобное для различения этих двух парней!: ^)
[1] Если ValueObject
находится во многих отношениях, то нам нужно проверить, нужно ли обновление для всех (односторонних) ссылок или нет.если нет, то мы оставляем текущую запись как есть и вставляем новую запись (для тех ссылок, для которых требуется обновление).