怎麼樣理解依賴注入?

梧桐雨—168發表於2008-03-26
假設你編寫了兩個類,一個是人(Person),一個是手機(Mobile)。
人有時候需要用手機打電話,需要用到手機的dialUp方法。
傳統的寫法是這樣:
Java code
public class Person{
    public boolean makeCall(long number){
        Mobile mobile=new Mobile();
        return mobile.dialUp(number);
    }
}


也就是說,類Person的makeCall方法對Mobile類具有依賴,必須手動生成一個新的例項new   Mobile()才可以進行之後的工作。
依賴注入的思想是這樣,當一個類(Person)對另一個類(Mobile)有依賴時,不再該類(Person)內部對依賴的類(Moblile)進行例項化,而是之前配置一個beans.xml,告訴容器所依賴的類(Mobile),在例項化該類(Person)時,容器自動注入一個所依賴的類(Mobile)的例項。
介面:
Java code
public Interface MobileInterface{
    public boolean dialUp(long number);
}


Person類:
Java code
public class Person{
    private MobileInterface mobileInterface;
    public boolean makeCall(long number){
        return this.mobileInterface.dialUp(number);
    }
    public void setMobileInterface(MobileInterface mobileInterface){
        this.mobileInterface=mobileInterface;
    }
}


在xml檔案中配置依賴關係
Java code

    
        
        





這樣,Person類在實現撥打電話的時候,並不知道Mobile類的存在,它只知道呼叫一個介面MobileInterface,而MobileInterface的具體實現是通過Mobile類完成,並在使用時由容器自動注入,這樣大大降低了不同類間相互依賴的關係。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/13270562/viewspace-217879/,如需轉載,請註明出處,否則將追究法律責任。

相關文章