Design Pattern 軟體工程與哲學

控制反轉 Inversion of Control (IoC)

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. 所以雖然兩者目的不同,但實為一體之兩面。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。