是什麼記錄下一之間的主要區別:創建實例並將其作爲參數傳遞並在參數內部創建實例之間有什麼區別?
和
User user = new User(new Database(config));
我說得明白,第二個是第一的只是短期的形式,當我不打算可以使用請撥打任何database
方法?
是什麼記錄下一之間的主要區別:創建實例並將其作爲參數傳遞並在參數內部創建實例之間有什麼區別?
和
User user = new User(new Database(config));
我說得明白,第二個是第一的只是短期的形式,當我不打算可以使用請撥打任何database
方法?
在大多數情況下是不是真的有太大的區別。有一對夫婦的差異,但:
在第一種情況下,你可以通過database
變量訪問Database
實例,而在第二個,你就必須從User
實例得到它,在user
引用爲了直接做任何事情。如果您只是使用Database
構建User
,然後直接對它執行任何操作,那顯然沒有關係。
如果User
實例user
引用不再具有由於某些原因向Database
對象的引用(例如,它僅僅用它在它的構造,或某些其它的呼叫使它設置指的是它的成員變量null
),和database
仍然存在,則該Database
對象的引用在程序仍然存在,和GC不能收集它。這主要是一個問題,如果你正在做的事情一樣爲每個對象創建單獨的成員變量,而不是使用局部變量,或者如果你傳遞的對象圍繞單獨的,如果你不打算直接訪問Database
,那麼它真的沒有意義,有一個單獨的成員變量或傳遞它。
所以,真的,唯一的區別有其獨立的參考Database
的後果做的,如果你正在與Database
做的是構建User
,然後有一個database
變量完全不必要。