反射:不用new來創建對象,而是用類加載器,根據字符串名創建類,創建類的權利轉移了,不是調用者new而是交給了IoC(inversion of control)控制容器來創建,是實現控制反轉的關鍵技術。在java中,用Assembly.Load(集合名).CreateInstance(集合名.類名)來實現反射,對象是由IoC容器根據類加載器創建的。對象不是預先創建編譯好,而是使用時動態創建。
控制反轉:利用反射技術,將對象創建權利轉移給容器,一般結合配置文件,讀取根據配置文件創建對象,省去了用來判斷創建哪個對象的switch和if語句。
依賴注入:依賴注入也是實現控制反轉的一個技術,其實我們在項目中也經常用到,即對象的實例化由別的類注入,可以是容器創建瞭然後注入,也可以是另外的類中創建後注入,不是自己創建,也是將控制權轉自給了別人。可以用構造函數也可以用set函數,如:
public class Logic{
myDataBase db;
public Logic(myDataBase mdb){
db = mdb;
}
或
public void setMyDatabase(myDataBase mdb){
db = mdb;
}
......
}
參數是實例化後的對象,不是自己new的,稱爲依賴注入。