2 回答

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超5個(gè)贊
如果我們暫時(shí)假設(shè)這SingletonClass
不是單例,并且我們沒有通過調(diào)用方法獲得實(shí)例static
,那么我們將面臨另一個(gè)問題,即如何將這些類鏈接在一起。這個(gè)問題是通過以下方法解決的Dependency Injection
,這個(gè)概念在這里得到了很好的描述:
控制容器反轉(zhuǎn)和依賴注入模式
單元測(cè)試 101:控制反轉(zhuǎn)
閱讀完上面的內(nèi)容后,應(yīng)該很容易選擇.1
所有類都在構(gòu)造函數(shù)中引用所需依賴項(xiàng)的選項(xiàng)。interface
您甚至可以為您需要的行為創(chuàng)建一個(gè)并在 中實(shí)現(xiàn)它SingletonClass
?,F(xiàn)在你看到了,類實(shí)現(xiàn)Singleton模式這一事實(shí)并沒有使它變得特別,我們應(yīng)該像其他類一樣注入它們。使用您帶來的所有好處都DI
可以應(yīng)用于您的班級(jí)。
只需將其與您進(jìn)行比較.3
,您就需要編寫一個(gè)需要模擬某些內(nèi)容的測(cè)試。如果是的話,這將是更令人不愉快的任務(wù).1
。

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超6個(gè)贊
這樣看:您質(zhì)疑編譯器是否能夠識(shí)別靜態(tài)最終引用可以編譯為內(nèi)聯(lián)引用。
我猜編譯器會(huì)將 getInstance() 轉(zhuǎn)換為內(nèi)聯(lián)引用。我不太相信編譯器會(huì)認(rèn)識(shí)到,當(dāng)您按值傳遞引用時(shí),您是故意為自己創(chuàng)建額外的工作,并且當(dāng)您傳遞引用時(shí),它會(huì)在堆棧上創(chuàng)建一個(gè)額外的引用。
我的猜測(cè)是 getInstance() 會(huì)更有效。
添加回答
舉報(bào)