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