2017-02-13 37 views

回答

2

在大多數情況下是不是真的有太大的區別。有一對夫婦的差異,但:

  1. 在第一種情況下,你可以通過database變量訪問Database實例,而在第二個,你就必須從User實例得到它,在user引用爲了直接做任何事情。如果您只是使用Database構建User,然後直接對它執行任何操作,那顯然沒有關係。

  2. 如果User實例user引用不再具有由於某些原因向Database對象的引用(例如,它僅僅用它在它的構造,或某些其它的呼叫使它設置指的是它的成員變量null),和database仍然存在,則該Database對象的引用在程序仍然存在,和GC不能收集它。這主要是一個問題,如果你正在做的事情一樣爲每個對象創建單獨的成員變量,而不是使用局部變量,或者如果你傳遞的對象圍繞單獨的,如果你不打算直接訪問Database,那麼它真的沒有意義,有一個單獨的成員變量或傳遞它。

所以,真的,唯一的區別有其獨立的參考Database的後果做的,如果你正在與Database做的是構建User,然後有一個database變量完全不必要。

相關問題