IOC
source :https://zh.wikipedia.org/wiki/%E6%8E%A7%E5%88%B6%E5%8F%8D%E8%BD%AC
控制反轉[編輯]
控制反轉(Inversion of Control,縮寫為IoC),是物件導向編程中的一種設計原則,可以用來減低電腦代碼之間的耦合度。其中最常見的方式叫做依賴注入(Dependency Injection,簡稱DI),還有一種方式叫「依賴尋找」(Dependency Lookup)。通過控制反轉,物件在被建立的時候,由一個調控系統內所有物件的外界實體,將其所依賴的物件的參照傳遞給它。也可以說,依賴被注入到物件中。
實作方法
實作控制反轉主要有兩種方式:依賴注入和依賴尋找。兩者的區別在於,前者是被動的接收物件,在類A的例項建立過程中即建立了依賴的B物件,通過類型或名稱來判斷將不同的物件注入到不同的屬性中,而後者是主動索取響應名稱的物件,獲得依賴物件的時間也可以在代碼中自由控制。
依賴注入
依賴注入有如下實作方式:
- 基於介面。實作特定介面以供外部容器注入所依值型別的物件。
- 基於 set 方法。實作特定屬性的public set方法,來讓外部容器呼叫傳入所依值型別的物件。
- 基於建構函式。實作特定參數的建構函式,在新建物件時傳入所依值型別的物件。
- 基於註解。基於Java的註解功能,在私有變量前加「@Autowired」等註解,不需要顯式的定義以上三種代碼,便可以讓外部容器傳入對應的物件。該方案相當於定義了public的set方法,但是因為沒有真正的set方法,從而不會為了實作依賴注入導致暴露了不該暴露的介面(因為set方法只想讓容器存取來注入而並不希望其他依賴此類的物件存取)。
依賴尋找
依賴尋找更加主動,在需要的時候通過呼叫框架提供的方法來取得物件,取得時需要提供相關的設定檔路徑、key等資訊來確定取得物件的狀態
AOP
0 意見:
張貼留言