面試官問對Spring框架IOC解耦的理解,該怎麼回答?

要理解IOC的解耦合操作,首先我們得搞清楚什麼是耦合?怎麼做才是解耦合?什麼又是IOC呢?然後我們才能知道IOC如何實現解耦合操作。

什麼是耦合?

軟體內部不同模組之間相互聯絡以及緊密的程度就是耦合。如果模組之間聯絡的越緊密,那麼就說明耦合性越高,模組的獨立性就越差。

那麼在開發中,如果物件之間的耦合度很高的話,也就是說物件之間的依賴性越強的話,維護的成本自然就越高,因此在設計時應使物件之間的耦合變到最小,儘量達到低耦合。

那麼怎麼做才是解耦呢?

解耦也就是字面上的意思解除耦合關係。

在軟體開發中,把降低模組之間的耦合程度即可以理解為解耦操作,我們總是聽到別人說高內聚、低耦合,也是軟體設計衡量模組獨立程度的標準。但實際上要想達到理論上的絕對零耦合是做不到的。所以最好能達到松耦合的狀態,即在保證實現功能的前提下儘量減少類和類之間的耦合。我們可以利用介面的多型達到這一目標,透過不同的實現類讓呼叫方對具體實現不去關心,從而達到松耦合的目的。

什麼是Spring框架的IOC,它又是如何做到解耦的呢?

首先IOC全稱是Inversion of Control翻譯過來就是控制反轉,IOC其實不是一種技術,它更是一種設計思想。IOC的出現主要作用就是解耦。

在平時的JavaWeb應用程式開發中,我們要完成某一個模組功能時,可能會需要兩個或以上的物件來一起協作完成,在以前沒有使用Spring框架的時候,每個物件在需要別的物件協助時,都需要自己透過new的方式將協作的物件例項化出來,建立協作物件的許可權在自己手上,自己需要哪個,就主動去建立就可以了,而這樣做呢,會使得物件之間的耦合變高,A物件需要B物件時,A物件來例項化B物件,這樣A物件就對B物件產生了依賴,也就是A物件和B物件之間存在一種緊密耦合關係,而使用了Spring框架之後就不一樣了,建立B物件的工作交由Spring框架來幫我們完成,Spring建立好這個物件以後,會儲存到一個容器裡面,當A物件需要時,Spring就會從容器中注入進來,至於Spring是如何建立這個物件的,A物件其實並不需要關心,A物件需要B物件時,Spring來建立B物件,然後給A物件就可以,從而達到松耦合的目的。

所以控制反轉IOC是說建立物件的控制權發生了轉移,由以前主動建立的許可權,到現在把許可權轉移交給了IOC容器,它是建立物件的工廠,你需要什麼物件,它就給你創建出來,然後你需要的時候,注入進來就可以了,有了IOC容器之後,原來的依賴關係就沒有了,它們都依賴IOC容器來幫我們建立它們之間的關係。

如果你還是不太理解IOC,那麼舉個例子就比如說人餓了想要吃飯。如果不使用IOC的話,你就得自己去菜市場買菜、做飯才能吃上飯。用了IOC以後,你可以到一家飯店,想吃什麼菜你點好就可以了,具體怎麼做你不用關心,飯店做好了,服務員端上來你負責吃就可以了,其它的交給飯店來做。

透過以上的理解,相信大家已經能夠理解IOC是如何完成解耦,希望今天的分享能給大家帶來幫助,也歡迎大家在下面評論留言交流。

相關文章