Да, от этого нас защищает противоположный принцип - low coupling. Чем больше в классе поведения, тем больше у него зависимостей, больше связей, тем он сложнее. Поиск баланса между низким уровнем связей (Low Coupling) и высокой связностью (High Cohesion) - одна из важнейших задач объектно-ориентированного проектирования.noLogicOnlyWar писал(а): ↑2017.12.28, 17:49 Мы хотим получить высокую связность между чем и чем? Если все инкапсулировать в 1 класс то и взаимодействовать он ни с кем не будет.
Высокая связность должна быть между атрибутами класса User и поведением, которое работает с этими атрибутами. ООП и было изобретено, чтобы "объеднить" данные и поведение, которые существовали в процедурном подходе по отдельности как процедуры и структуры данных. Создавая такие вот доменные сервисы, опять приходим к этому разделению. Иногда действительно нет класса, которому можно назначить некоторое поведение и его необходимо синтезировать, но по-моему это не тот случай. Я так понял, что в рассматриваемом нами примере основной причиной желания вынести код в доменный сервис является как раз нежелание внедрять зависимости через конструктор в сущность пользователя, а не что-то другое.