05 依賴注入優先於硬連線資源

2022-03-15 15:57:34 字數 1651 閱讀 8765

前言

是什麼

硬連線資源,我們可以理解為,乙個類,依賴其它基礎類,但是過於理想化,指定了它只連線乙個基礎類。例如我們有乙個工具類:拼音檢查器,它可以檢查拼音是否正確,那麼我們的字典裡是有所有拼音的,可以給我們提供乙個基礎的檢查資料,當我們用硬連線資源的方式去思考時,這個拼音檢查器的基礎資料只由《新華字典》提供。是不是感覺這是不合理的,因為每種語言都有自己的字典,資料只由《新華字典》來提供的話,感覺是不靈活,並且單一的。

**用

當乙個類依賴乙個或其他多個底部資源類的時候,我們可以考慮使用依賴注入優先於硬連線資源。

怎麼實現

我們使用乙個字典檢查的工具類來進行例項。

/**

* 通過靜態方法來替代硬資源連線

* *

@author

[email protected]

* @since

2020-01-12 */

public

class

spellchecker

//拼音檢查器提供給外部類呼叫的方法

public

static

boolean

isvalid(string word)

}

/**

* 使用單例來替代硬連線資源

* *

@author

[email protected]

* @since

2020-01-12 */

public

class

spellchecker02

//拼音檢查器提供給外部類呼叫的方法

public

static

boolean

isvalid(string word)

}

/**

* 使用依賴注入替代硬資源連線

* *

@author

[email protected]

* @since

2020-01-12 */

public

class

spellchecker03

public

boolean

isvalid(string word)

}

總結

不要用單例和靜態方法類來實現依賴乙個或多個底層資源的類,且該資源的行為會影響到該類的行為,需要使用乙個或多個底部資源類的乙個類,靜態方法、單例來實現是不適合的,因為它們不夠靈活,也不能夠測試。使用靜態方法,我們如果希望它能夠使用乙個以上的底部資源類,我們可以通過使dictionary屬性設定為非final,並新增乙個方法來更改現有拼寫檢查器中的字典,從而讓spellchecker支援多個字典,但這感覺是笨拙的。使用依賴注入來實現硬資源連線,也有一定的弊端,一般大型的專案,可能有數千個依賴項,這讓我們的專案變得混亂,不過我們可以使用spring框架來消除這些混亂。依賴注入,它極大地提公升了類的靈活性、可重用性和可測試性。

類的繼承,深度優先於廣度優先

coding utf 8 class people object def init self self.age 45 print people def sleep self print 123 class relation object def init self print relation cl...

spring 依賴注入 Spring依賴注入

依賴注入 dependency injection,簡稱di 與控制反轉 ioc 的含義相同控制反 在使用spring框架之後,物件的例項不再由呼叫者來建立,而是由spring容器來建立,spring容器會負責控制程式之間的關係,而不是由呼叫者的程式 直接控制,這樣控制權由應用程式轉移到了sprin...

ioc(依賴 依賴倒置 依賴注入)

先看一下這個大佬的部落格 我只是畫個圖 1.依賴 這個很不友好,要換別的player或者meidafile要動operation 2.依賴倒置 這個好很多了,加了兩個介面,要換別的player或者meidafile,不用動operation 3.ioc 控制反轉 控制權是我們使用者自己,如果是spr...