Я ищу более гибкую модель предметной области, в которой существует разделение данных и поведения, но я не верю, что уровень обслуживания является подходящим уровнем для поведения. Вместо этого, возможно, можно использовать простой подход уровня бизнес-логики, в котором объекты Business Entity представляют только данные, а объекты Business Process - только поведение, и среди этих поведений есть методы проверки.
Одно из преимуществ, в зависимости от того, насколько слабое связывание бизнес-процессов, вы можете применить проверку к более широкому диапазону ковариантов и, возможно, даже инвариантных типов. Подумайте на минуту о проверке полей «FirstName» и «LastName» и, кроме того, учтите, что эти поля в любой большой системе могут существовать в полудюжине или более разных объектов. Отделение процесса от данных позволит вам реализовать процессы валидации один раз и применить их ко многим объектам, которые предоставляют одинаковые данные.
Я заметил, что идеал, согласно которому модель предметной области «должна» состоять из доменных объектов, которые представляют собой сочетание данных и поведения, - это концепция Фаулера / Эванса, примерно 2000-2002 гг. распределенные информационные системы вместо 2-х уровневых приложений.)
Мысли