[Javascript] 依賴反轉(DIP), 控制反轉(IoC), 依賴注入(DI)

從前端角度徹底搞懂 DIP、IoC、DI、JS
https://zhuanlan.zhihu.com/p/61018434

依賴反轉原則︰依賴反轉原則(Dependency inversion principle,DIP),是一種特定的解耦形式,使得高層次的模組不依賴於低層次的模組的實現細節,依賴關係被顛倒(反轉),從而使得低層次模組依賴於高層次模組的需求抽象。

該原則規定:
1.高層次的模組不應該依賴與低層次的模組,兩者都應該依賴於抽象介面。
2.抽象介面不應該依賴於具體實現。而具體實現則應該依賴於抽象介面。

依賴這個理解起來很簡單,但這不代表可以隨意的依賴。在寫模組的時候,講究個高內聚低耦合,以提高模組的可拓展性和可維護性。模組依賴了誰,怎麼去依賴,都關乎了最終模組的好與壞。

控制反轉原則︰控制反轉(Inversion of Control,IoC),通過控制反轉,物件在被創建的時候,有一個控制系統內所有物件的外界實體,將其所依賴的物件的引用傳遞給它。可以說,依賴被注入到物件中。

依賴注入原則︰依賴注入(Dependency Injection,DI),在軟體工程中,依賴注入是種實現控制反轉用於解決依賴性設計模式。一個依賴關係指的是可被利用的一種物件(即服務提供端)。依賴注入是將所依賴的傳遞給將使用的從屬物件(即用戶端)。該服務將會變成用戶端的狀態的一部分。傳遞服務給用戶端,而非允許用戶端來建立或尋找服務,是本設計模式的基本要求。

本篇有通過XMLHttpRequest的Ajax與fetch舉例,一路到Service與Router的擴充,是非常精確、簡潔與重要的例子,能幫助我們理解與學習「依賴反轉原則」、「控制反轉原則」與「依賴注入原則」。


#Javascript, Dependency inversion principle, DIP, 依賴反轉原則, Inversion of Control, IoC, 控制反轉原則, Dependency Injection, DI, 依賴注入

留言