通常在程式撰寫上,若要由A呼叫B,通常都是直接以"主動"的方式去呼叫。
 
A         B
  主動建立
 
在這結構中過程中加入IoC/DI容器,會變得如何?(注意箭頭方向)
 
A         IoC/DI Container         B
     被動
 
此時A取得B instance時是採被動方式,由IoC/DI Container先取得B instance再植入A。
 
IoC及DI,其實只是針對同一件事情,以不同的角度去描述。
 
IoC  
-- Inversion Control          (控制反轉)
容器控制應用程式,由容器反向的向應用程式植入其所需的外部資源。
 
DI     -- Dependency Injection    (相依植入)
應用程式建立相依容器且植入所需的外部資源。
 
IoC/DI Container,可有效分離物件和其所需要的外部資源,使它們鬆散耦合,亦有利於功能重用,更使得程式整個體系結構變得更加靈活。
 
以下為IoC/DI程式範例
 
public class A {
     //等待被植入
     private B b = null ;
     //植入資源B
     public void setB(B b) {
         this.= b;
     }
    
     public void t1() {
         //此時要使用b,但不主動去建立,直接呼叫使用。
        b.tc();
     }
}

public interface B {
     public void tc();
}
 
由此程式碼可見,A要使用B時,需等待instance被植入,此範例就不實作IoC/DI Container。

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 流風羽 的頭像
    流風羽

    流風羽的部落格

    流風羽 發表在 痞客邦 留言(0) 人氣()