依賴反轉原則 - Dependency Inversion Principle

設計軟體時,有個原則被稱為依賴反轉原則。

依賴反轉原則是透過抽象化一層介面,讓物件之間透過議定好的介面進行溝通,舉結帳這件事情為例,我們可以將各種不同的金流服務抽象化為一個統一的介面(Interface),裡面只有成立訂單、付款、退款等方法可以使用,所有的金流服務都必須遵守這個介面進行實作(implement),因此對結帳這件事情來說,它只需要呼叫該介面裡的方法完成流程即可,不必管是什麼金流服務。

相較於常見的結帳相依於金流服務結帳 -> 金流服務 的線性關係,這種設計原則中的金流服務相依關係被反轉為 結帳 -> 金流介面 <- 金流服務 。 這種原則的好處是可以有效率的進行分工/整合,因為介面都統一了,要做什麼以及怎麼做也不用特別討論,也不容易出現整合時,要再去改一次原有流程裡的程式碼的情況。

此外,運用此原則也讓程式碼更易於測試,以結帳流程為例,不用真的呼叫金流服務的相關 API, 也能用一個有實作該介面的假金流物件丟進去測試流程。

以下是一個解釋的很好的 YT 影片,有興趣的人可以花 13 分鐘認識依賴反轉原則:

https://www.youtube.com/watch?v=9oHY5TllWaU

實務上,整合不同的金流服務也真的頗適合使用這種原則進行設計。

追蹤新知

看完這篇文章了嗎?還意猶未盡的話,追蹤粉絲專頁吧!

我們每天至少分享 1 篇文章/新聞或者實用的軟體/工具,讓你輕鬆增廣見聞提升專業能力!如果你喜歡我們的文章,或是想了解更多特定主題的教學,歡迎到我們的粉絲專頁按讚、留言讓我們知道。你的鼓勵,是我們的原力!

贊助我們的創作

看完這篇文章了嗎? 休息一下,喝杯咖啡吧!

如果你覺得 MyApollo 有讓你獲得實用的資訊,希望能看到更多的技術分享,邀請你贊助我們一杯咖啡,讓我們有更多的動力與精力繼續提供高品質的文章,感謝你的支持!