控制反轉和依賴注入

  • 看標題覺得很牛逼, 等我講完你就理解了, 面向對象中很簡單的東西。

  • 控制反轉也叫l(wèi)oC, 全稱Inverse of Control媒峡。

  • 控制反轉包括依賴注入(DI)和依賴查找(DL), 但我們大多數情況都認為loC就是DI卖毁。全稱分別為: Dependency Injection和Dependency Lookup。

  • loC原理也叫做依賴倒置原理, 全稱Dependency Inversion Principle。

  • 這里必須說明一下, loC是一種全新的設計模式勉耀。但Gof的23種設計模式中并沒有l(wèi)oC是因為控制反轉思想成熟較晚盼铁。

  • JAVA體系中Spring框架的核心就是依賴注入, 其他語言的各種框架也都會用到這種設計模式粗蔚。

  • A類用于查詢數據庫記錄, B類用于連接數據庫, 也就是說A依賴于B, 現在我們怎么在A類中書寫查詢方法呢?(為什么不在A中連接數據庫饶火?如果你有一百個A, 你連接一百次, new一百個對象實例出來嗎鹏控?這是需要內存和IO開銷的!B類只負責數據庫鏈接, 還要封裝工廠單例適配器模式, 內容并不少哦)

  • 單一功能原則是面向對象的基本原則之一, 也是GOF中設計模式的基本原則之一肤寝。全稱single responsibility principle当辐。

  • 我們的A類實體控制內部所有資源對象, 我們在其參數上將B類的引用寫上(注入, 類的引用即類的實例化對象), A的內部就可以使用B中的方法, 這就是依賴注入。

  • 也就是說, 控制反轉是鲤看,關于一個對象如何獲取他所依賴的對象的引用, 這個責任的反轉缘揪。這個對象不局限于我上面寫的類, 如果是A函數注入B函數, 其實就類似于回調了。

  • 什么叫責任的反轉刨摩?一開始是A對象在內部程序代碼中實例化B, 實例化這個操作的責任在內部; 依賴注入后我都在自己的內部當你實例化了, 真正的實例化操作由容器負責, 容器的參數注入實例化對象, 這就是責任反轉寺晌。

  • 依賴注入主要是用來解開對象之間的緊密耦合關系, 解耦是面向對象的基本原則之一。

  • 面向對象不得不提接口(Interface), 接口是必須被實現的, new一個接口A的一瞬間, A接口和實現A接口的B類之間, 依賴(耦合)關系就產生了澡刹。

  • A與B之間有依賴關系呻征。如果想使用接口A的另外一個實現就需要更改代碼了。當然我們可以建立一個Factory工廠類來根據條件生成想要的A接口的的具體實現, 這里不解釋工廠模式了罢浇。

  • 工廠模式確實看起來有點用, 但實際上對耦合狀態(tài)并沒有改變,因為這只是在工廠中加判斷語句做分流處理陆赋。loC則是將依賴問題交給實現類, 可以用于徹底解決依賴問題沐祷。

  • 在JAVA體系中, loC是依賴于反射編程的, 反射就是根據類名來生成對象。反射這種操作比直接new生成對象的效率要低很多, 但是提高了系統的可維護性和靈活性攒岛。對于某些生成要求高的對象不聯系使用loC赖临。

  • JAVA中使用loC反射編程, IDE不方便自動查找重構, 必須開發(fā)者手動修改XML配置文件。

  • JAVA中的loC容器: Pico Container灾锯、Avalon 兢榨、Spring、JBoss顺饮、HiveMind吵聪、EJB等。php中的loC容器可以是任何一個函數或者接口的實現類兼雄。

  • 不知道各位能理解多少, 整理一下自己的學習筆記吟逝。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市赦肋,隨后出現的幾起案子块攒,更是在濱河造成了極大的恐慌,老刑警劉巖佃乘,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件囱井,死亡現場離奇詭異,居然都是意外死亡恕稠,警方通過查閱死者的電腦和手機琅绅,發(fā)現死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鹅巍,“玉大人,你說我怎么就攤上這事料祠÷媾酰” “怎么了?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵髓绽,是天一觀的道長敛苇。 經常有香客問我,道長顺呕,這世上最難降的妖魔是什么枫攀? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮株茶,結果婚禮上来涨,老公的妹妹穿的比我還像新娘。我一直安慰自己启盛,他們只是感情好蹦掐,可當我...
    茶點故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布技羔。 她就那樣靜靜地躺著,像睡著了一般卧抗。 火紅的嫁衣襯著肌膚如雪藤滥。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天社裆,我揣著相機與錄音拙绊,去河邊找鬼。 笑死泳秀,一個胖子當著我的面吹牛时呀,可吹牛的內容都是我干的。 我是一名探鬼主播晶默,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼谨娜,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了磺陡?” 一聲冷哼從身側響起趴梢,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎币他,沒想到半個月后坞靶,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡蝴悉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年彰阴,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片拍冠。...
    茶點故事閱讀 39,722評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡尿这,死狀恐怖,靈堂內的尸體忽然破棺而出庆杜,到底是詐尸還是另有隱情射众,我是刑警寧澤,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布晃财,位于F島的核電站叨橱,受9級特大地震影響,放射性物質發(fā)生泄漏断盛。R本人自食惡果不足惜罗洗,卻給世界環(huán)境...
    茶點故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望钢猛。 院中可真熱鬧伙菜,春花似錦、人聲如沸厢洞。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至丧叽,卻和暖如春卫玖,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背踊淳。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工假瞬, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人迂尝。 一個月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓脱茉,卻偏偏與公主長得像,于是被迫代替她去往敵國和親垄开。 傳聞我的和親對象是個殘疾皇子琴许,可洞房花燭夜當晚...
    茶點故事閱讀 44,614評論 2 353

推薦閱讀更多精彩內容