Где разместить проверку сущностей в DDD? - PullRequest
0 голосов
/ 09 сентября 2018

Я хотел бы подтвердить / уточнить, верно ли мое предположение о проверке сущностей DDD.

Например - у меня есть объект домена WorkReport, этот объект содержит одно или несколько действий WorkReportActivity, есть addNewActivity для добавления нового действия:

public void addNewActivity(final WorkReportActivity activity) {
    activities.put(activity.getId(), activity);
}

Вопрос:

Я хотел бы знать, где разместить проверку / подтверждение того, что экземпляр WorkReportActivity действителен, чтобы отчет мог принять его и не содержал неверных данных.

Достаточно ли, чтобы не позволял создавать WorkReportActivity экземпляр с недопустимыми параметрами и выполнять проверку в конструкторе WorkReportActivity? Когда-нибудь появится больше представлений о том, что является допустимым экземпляром, в отношении различных вариантов использования в приложении.

Ответы [ 2 ]

0 голосов
/ 17 сентября 2018

Действительно, вы должны проверить в конструкторе любого объекта домена, что создаваемый вами экземпляр действителен, независимо от того, кто вызывает конструктор. Вы должны сконцентрировать все правила проверки в одном методе и вызвать его из конструктора.

0 голосов
/ 09 сентября 2018

Я хотел бы знать, где разместить проверку / подтверждение того, что экземпляр WorkReportActivity действителен, чтобы отчет мог принять его и не содержал недопустимых данных.

Обычно: в методе конструктор / фабрика, который создает действие.

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

Если ваш язык реализации не включает "строгую" проверку типов, вам может потребоваться немного умного. ( начался в мире Java, где эти проверки доступны во время разработки).

Внимание: на самом деле существует два разных вида проверки, связанных с сущностями. Обеспечение того, что «состояние» является действительным - в соответствии с допущениями, которые будут сделаны относительно него - обычно выполняется в объекте (ах) значения, которые представляют это состояние. Но вам также может понадобиться проверить, разрешено ли сущности переходить из одного действительного состояния в другое.

(Эта проверка обычно неявна - у нас часто есть объект, который рассчитывает свое собственное следующее состояние из его текущего состояния, при этом вычисление гарантирует, что переход будет действительным).

...