商業,創業,美食,葡萄酒,閱讀,網路科技。
這是我的 FB粉專 以及 IG,我比較常使用 Threads,歡迎大家追蹤互動~
Inversion of Control 是區隔 library 與 framework 很重要的一個概念。
Martin Fowler 的文章
http://martinfowler.com/bliki/InversionOfControl.html
http://martinfowler.com/articles/injection.html
以 design pattern 來說,Inversion of Control 真正的精神是 template method. 在 GoF 的 <Design Patterns> 中,template method 主要以繼承來達成。但是如果真正理解的話,用 composition 的方式一樣可以達成 template method.
很多文章會把 Dependency Injection 與 Inversion of Control 擺在一起討論 (如上面 link)。主要是因為雖然兩者用意不同 (Dependency Injection 的目的是解除相依性,Inversion of Control 的目的是製造框架),但常常產出的程式碼會相近,尤其是當 Dependency Injection 被大量使用的時候。
需注意的是,即使是少量的 Dependency Injection, 一樣會伴隨小規模的 Inversion of Control. 所以雖然兩者目的不同,但實為一體之兩面。
商業,創業,美食,葡萄酒,閱讀,網路科技。