Существует также решение между 1 и 2. Вы можете иметь ленивый загрузочный прокси для пользовательского класса. С этим решением вы можете получить лучшее из обоих миров, потому что прокси взаимозаменяем с реальной вещью, поэтому в зависимости от ситуации вы можете иметь сам объект или прокси.
Edit:
Я попытаюсь объяснить это на примере.
Скажем, у вас есть представление, в котором вам не нужна информация пользователя, затем вы можете настроить / настроить вашу почтовую фабрику для использования ленивого прокси ( см. Википедию ) для пользователя, который будет содержать только Я БЫ. Таким образом, доступ к пользователям не требуется.
В другом представлении вам иногда требуется доступ к пользовательской информации, но только для некоторых сообщений, здесь вы также указываете / настраиваете свою фабрику, чтобы включить ленивый прокси для пользователя.
Но когда вам действительно нужен доступ к пользовательской информации, вы можете получить доступ к прокси-объекту, который затем загрузит реальный пользовательский объект и перенаправит на него сообщения.
В еще одном представлении вам нужна информация о посте и пользователе, поэтому здесь вы указываете своей фабрике постов использовать фактические объекты пользователя.