本文為「Clean Architecture 無瑕的程式碼:整潔的軟體設計與架構篇」第 5 章「物件導向程式設計」的閱讀筆記。
良好應用「物件導向」的概念,即可得到好的程式架構。
物件導向的程式語言必須至少包含以下三件事
只對外部透露該透露的資訊,並且隱藏內部資訊,例如:實作細節。
但到底外部能知道多少細節,還有所有區別的。
偽裝資料結構,宣告一個型別後,再宣告一個變數當成這個型別的衍生型別。
多型是「指向函式的指標」的一種應用,也就是使用「函式指標」來實現多型。
透過指標的方法若沒有依照規定來實作,就會很難 debug -> 改用 OO 來解決這個問題。
呼叫樹(calling tree)經由流程控制而呼叫一個又一個的函式,而呼叫函式時必須呼叫它的名字(module name),這樣函式與函式間的相依程度是很高的。
解法是使用一個介面(interface)來達成「依賴反向」。這樣做的優點是能將「業務邏輯」與「程式邏輯」切分,也就是說,UI 與 DB 可以當成業務邏輯的 plugin,當 UI 與 DB 有變更時可以獨立部署而不影響業務邏輯。