Я думаю, ты на правильном пути.
1. В тот момент, когда вам нужно создать класс только для того, чтобы позаботиться о классе предметной области, вы сделаете свою модель более связанной. Вы создаете больше зависимостей, что явно плохо. Ваши объекты должны быть способны позаботиться о себе сами.
2. Модель, о которой говорят ваши друзья, на самом деле известна как Модель анемичной доменной области. данные отделены от логики вашей программы, и это было впервые описано Мартином Фаулером как анти-шаблон. Это разделение между логикой и данными очень часто используется в процедурном программировании, но не в объектно-ориентированном программировании (цель ООП прямо противоположна).
3 - Уменьшает повторное использование кода.
4 - Сложнее тестировать, если вам нужно инициализировать логику, отделенную от ваших данных. В то же время происходит утечка данных через вашу систему.
DTO - это то, что вы могли бы использовать, конечно. Но делать это не рекомендуется. Первоначально он был разработан для переноса данных (объектов) через процессы или уровни. Потом по какой-то причине люди начали использовать его между слоями, что не достойно. Делает вашу программу более сложной (после того, как вы разбросаете эти сущности по всему приложению) и обеспечивает глобальный доступ.
То, что вы делаете, называется моделью богатой предметной области, и с ее использованием проблем нет. Но, конечно, с этим нужно быть осторожным. Если вы видите, что ваш класс несет слишком много обязанностей, то, возможно, пришло время разработать другие классы, которые помогут (возможно, вы нарушаете SRP).
Посмотрите, как в Grails создаются объекты предметной области. Они поощряют вас писать богатые модели (проверка, транзакция БД и т. д.).
person
Tiago Farias
schedule
11.08.2012