IOC有幾種實現的類型,包括基于方法參數調用的Method-based (M) IoC,它把組件傳遞給每個方法調用;基于接口的Interface-based (I) IoC(通常稱為類型1),它使用接口來聲明組件之間的依賴性,例如,Serviceable, Configurable;基于Setter方法的Setter-based (S) IoC(通常稱為類型2),它使用setter方法來設置組件之間的依賴性;基于構造函數的Constructor-based (C) IoC(通常稱為類型3)。Martin Fowler將IOC模式稱為Dependency Injection模式。
IOC是框架開發的一個基本原理。在開源軟件中,不少的容器類框架都采用了IOC的思路。
組件污染
在IOC 的第一類型中,由于組件需要實現一些特定的接口,或是從某個類集成。這將使得組件受到一些約束(稱為Invasive),例如組件移植不便。另一種情況是組件需要依賴于一個特定的容器,最為典型的就是EJB,組件無法脫離容器單獨存在,這也使得組件受到約束。這兩種情況都屬于組件污染。
文章來源于領測軟件測試網 http://www.kjueaiud.com/