2 回答

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

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