經典面試題-什麼是控制反轉(IOC)?什麼是依賴注入(DI)?

  • 2019 年 11 月 5 日
  • 筆記

控制反轉(IOC)

控制反轉是應用於軟體工程領域中的,在運行時被裝配器對象來綁定耦合對象的一種編程技巧,對象之間耦合關係在編譯時通常是未知的。在傳統的編程方式中,業務邏輯的流程是由應用程式中的早已被設定好關聯關係的對象來決定的。在使用控制反轉的情況下,業務邏輯的流程是由對象關係圖來決定的,該對象關係圖由裝配器負責實例化,這種實現方式還可以將對象之間的關聯關係的定義抽象化。而綁定的過程是通過「依賴注入」實現的。

控制反轉是一種以給予應用程式中目標組件更多控制為目的設計範式,並在我們的實際工作中起到了有效的作用。 依賴注入是在編譯階段尚未知所需的功能是來自哪個的類的情況下,將其他對象所依賴的功能對象實例化的模式。這就需要一種機制用來激活相應的組件以提供特定的功能,所以依賴注入是控制反轉的基礎。 否則如果在組件不受框架控制的情況下,框架又怎麼知道要創建哪個組件?

在Java中依然注入有以下三種實現方式:

  • 1.構造器注入
  • 2.Setter方法注入
  • 3.介面注入