依賴注入、控制反轉,這兩個詞天天用,但屬于用了很多年真想講出來不太好表達那種。
一、依賴注入
依賴注入,就是把底層類傳入上層類,三種注入方式
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsISPrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdsATOfd3bkFGazxCMx8VesATMfhHLlN3XnxCMwEzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5yN5IWYmJzMhNGM5ADZ5YjM5Y2Y5QWOjlDM2MDN1UTYh9CX1AzLchDMxIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjL0M3Lc9CX6MHc0RHaiojIsJye.png)
通過具體例子來體會二者的差別:“人與身份證的依賴關系”适合采用Setter注入,因為人不是一出生就有身份證,而是到了法定年齡才有,用構造函數注入表達的語義與此相違背。相反“人與父母的依賴關系”則适合采用構造函數注入,因為親子關系是從人一出生就建立的,用Setter注入必然使得對象建立後有一段時間處于非法狀态,按契約式設計的術語即破壞了對象的不變量(invariant)。
二、控制反轉
控制反轉就是将建立對象的控制權反轉過來由容器建立,強調的是一種能力和思想。
可能反轉不是中國人的文法習慣,聽着很别扭,可能改成“”取消“”更好了解。