Для большинства целей действительно нет большой разницы. Есть несколько отличий, хотя:
В первом случае, вы можете получить доступ к этому Database
экземпляру через переменную database
, в то время как во втором, вы должны получить его из экземпляра User
что user
ссылки в чтобы делать что-либо прямо. Это, очевидно, не имеет значения, если вы просто строите User
с Database
, а затем ничего не делаете с ним напрямую.
Если User
экземпляр, user
ссылки больше не имеет ссылку на Database
объект по каким-либо причинам (например, он использовал его только в его конструктор, или какой-то другой вызов сделал это установить переменную-член, который со ссылкой на него в null
), и database
все еще существует, то ссылка на этот объект Database
все еще существует в программе, и GC не может его собрать. Это в основном проблема, если вы делаете что-то вроде создания отдельных переменных-членов для каждого объекта, вместо использования локальных переменных или если вы передаете объекты по отдельности, и если вы не собираетесь напрямую обращаться к Database
, то это на самом деле не имеет смысла иметь отдельную переменную-член для нее или передать ее.
Таким образом, на самом деле, только различия должны делать с последствиями наличия отдельной ссылки на Database
, и если все, что вы делаете с Database
строят User
, то имея database
переменного совершенно ненужным.