3C科技 娛樂遊戲 美食旅遊 時尚美妝 親子育兒 生活休閒 金融理財 健康運動 寰宇綜合

Zi 字媒體

2017-07-25T20:27:27+00:00
加入好友
http://hist140.wikia.com/wiki/Dependency_Theory IoC/DI 分別是 Inversion of Control (控制反轉) 與 Dependency Injection (依賴注射) 這兩個單字的合體,字面上看起來實在是有點繞口。簡單的說,IoC (Inversion of Control) 控制反轉是一種物件導向程式設計的概念,主要的目的也是為降低系統耦合度,將程式中的控制邏輯進行移轉,讓程式碼之間的控制關係簡化。IoC 這個詞聽起來實在是太玄了,其中最常見的實作技巧就是 DI (Dependency Injection) 依賴注射設計模式 (Design Pattern),可以讓你的程式架構進行解耦合,更容易實現可以動態組合的模組化架構。 物件導向程式設計 (OOD) 可以說是程式設計進步的一個里程碑,有了物件導向,大幅提高了程式碼的維護性,一併讓程式碼的重用性也更高了。但是相反的,物件導向也帶來類別與類別之間的依賴關係,很久以前我有寫過一篇「這個物件導向有點依賴!」文章,其中提到一些系統耦合性的概念。這個物件依賴關係假想敵,隨著系統的複雜性提高,程式間的依賴關係也隨之提高,當系統大到一定的程度時,依賴關係將變得難以控制。通常到這個局面程式碼的耦合性已經很,即使透過程式已經透過介面 (Interface) 進行隔離,也朝著模組化進行設計,但是為了實體化眾多介面的實作類別 (簡單來說就是 new Class) 好讓程式執行,難免會讓系統變成一個不容易即時抽換的假模組化架構,造成抽換模組還是需要動手改程式碼,一點也不靈活。 依賴注射典型解耦合設計模式 DI (Dependency Injection) 依賴注射比起 IoC 應該會好理解很多,主要是實現「抽離類別實體化」行為的一種設計模式,說實在的聽起來可能還是很抽象。那舉個例子說明好了,當我們的程式碼用到 new 這樣的動作時,這份程式碼就會相依這個 Class,即使已經透過介面進行設計,在實體化的過程中還是免不了類別(與介面)的依賴,如下程式範例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

本文由toright提供 原文連結

寫了 5860316篇文章,獲得 23313次喜歡
精彩推薦