依賴反轉原則 - Dependency Inversion Principle

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

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

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

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

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

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

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

Facebook Threads X

對抗久坐職業傷害

研究指出每天增加 2 小時坐著的時間,會增加大腸癌、心臟疾病、肺癌的風險,也造成肩頸、腰背疼痛等常見問題。

然而對抗這些問題,卻只需要工作時定期休息跟伸展身體即可!

你想輕鬆改變現狀嗎?試試看我們的 PomodoRoll 番茄鐘吧! PomodoRoll 番茄鐘會根據你所設定的專注時間,定期建議你 1 項辦公族適用的伸展運動,幫助你打敗久坐所帶來的傷害!

贊助我們的創作

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

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