Допустим, у меня есть модельный адрес, который вводится из пользовательского интерфейса. Я должен подтвердить, что адрес никогда не сохраняется в системе в неполном состоянии (что бы это ни значило для бизнеса).
Когда пользователь вводит адрес в пользовательском интерфейсе, он сериализуется в объект Address.
Поэтому мне было интересно: куда относится метод, подобный isComplete? Валидатор или модель?
Если я помещу этот метод в модель адреса и вызову address.isComplete()
в валидаторе перед сохранением, это означает, что неполный адрес является допустимым состоянием системы; если я проверяю полноту в валидаторе, создается впечатление, что валидатор слишком много знает о внутренних адресах.
Мне интересно, по какому общему правилу следуют другие?
РЕДАКТИРОВАТЬ:
Как упомянуто ниже, в приведенном выше примере объект адреса повторно используется в нескольких системах, и «полный» объект в одной системе может не означать «полный» объект в другой системе. Таким образом, не существует единого способа принудительного применения «Объект никогда не должен создаваться в недопустимом состоянии» в глобальном масштабе, поскольку недопустимое состояние зависит от контекста.