Вопрос должен быть не «почему», а « при ».
Определенно, это антишаблон, когда только в результате его использования более высокая стоимость - время выполнения или обслуживание. Я работал над проектами, в которых сотни DTO идентичны классам сущностей базы данных. Каждый раз, когда вы хотели добавить одно рекламное поле для добавления идентификатора, например, четыре раза - в DTO, в сущность, в преобразование из DTO в классы или сущности домена, обратное преобразование, ... Вы забыли некоторые места и получили данные противоречивы.
Это не анти-паттерн, когда вам действительно нужно другое представление классов доменов - более плоский, более богатый, более узкий, ...
Лично я начинаю с класса домена и прохожу его с правильной проверкой в нужных местах. Я могу аннотировать и / или добавлять некоторые «вспомогательные» классы для создания отображений, базы данных, форматов сериализации, таких как JSON или XML ... Я всегда могу разделить класс на два, если я чувствую необходимость.
Речь идет о вашей точке зрения - я предпочитаю рассматривать объект домена как отдельный объект, играющий различные роли, а не как несколько объектов, созданных друг от друга. Если единственная роль, которую играет объект, - это передача данных, то это DTO.