ioc的英文名稱是inverse of control ,可譯為控制反轉或者控制倒置。
對ioc 有兩種理解方式:
第一種:認為ioc 一種是物件導向的設計模式。
第二種:認為ioc 跟物件導向沒有直接關係,所謂的控制反轉就是將應用對流程的控制轉移到框架中 ,ioc是設計框架所採用的一種設計原則和思想。
個人偏向於第二種的理解: 控制反轉體現的是控制權的轉移,即控制權原來在a 手中,現在需要b來接管,可以理解為「針對流程的控制」。ioc幾乎是所有框架都具有的乙個固有屬性。
ioc一方面通過控制流程從應用程式向框架的反轉,實現了針對流程自身的重用,另一方面通過內建的擴充套件機制使這個被重用的流程能夠自由的定製。
很多設計模式採用實現了ioc原則:
1. 模板方法設計模式:模板方法設計模式和ioc的意圖一致,該模式主要將乙個可復用的工作流程或者由多個步驟組成的演算法定義成模板方法。
具體操作為:在類中定義乙個操作中的演算法骨架,而將一些步驟延遲到子類中去實現。模板方法使得子類可以不改變乙個演算法的結構前提下,重新定義演算法的某些特定步驟,模板方法模式把不變行為搬到超類中,從而去除了子類中的重複**。步驟的實現可以用虛方法或者抽象類等方式。
//客戶端呼叫
class
client
}public
abstract
class
vegetabel
//第一步倒油
public
void
pouroil()
//把油燒熱
public
void
heatoil()
//油熱了之後倒蔬菜下去,具體哪種蔬菜由子類決定
public
abstract
void
pourvegetable();
//開發翻炒蔬菜
public
void
stir_fry()
}//菠菜
public
class
spinach : vegetabel
}//大白菜
public
class
chinesecabbage : vegetabel
}
2. 工廠方法設計模式:3 抽象工廠設計模式:
4 依賴注入:
spring學習總結(1 1) IOC的理解
之前在學習ssh的時候開始接觸spring這個框架。因為一直在學習新的東西,沒有對這部分的學習做總結。最近,也一直在使用spring,只是沒有比較深入的去了解,也就是只是停留在使用這個層面上。從這篇部落格開始,對spring部分的學習做一些記錄。從其核心內容開始吧,這篇部落格就是ioc的了解。ioc...
理解依賴注入(IOC)
ioc 英文全稱 inversion of control,中文名稱 控制反轉,它還有個名字叫依賴注入 dependency injection 作用 將各層的物件以松耦合的方式組織在一起,解耦,各層物件的呼叫完全面向介面。當系統重構的時候,的改寫量將大大減少。理解依賴注入 當乙個類的例項需要另乙個...
IOC和AOP的理解
ioc 控制反轉也叫依賴注入。利用了工廠模式 將物件交給容器管理,你只需要在spring配置檔案總配置相應的bean,以及設定相關的屬性,讓spring容器來生成類的例項物件以及管理物件。在spring容器啟動的時候,spring會把你在配置檔案中配置的bean都初始化好,然後在你需要呼叫的時候,就...