转载

物件導向程式設計 | Clean Architecture 無瑕的程式碼:整潔的軟體設計與架構篇 閱讀筆記

物件導向程式設計 | Clean Architecture 無瑕的程式碼:整潔的軟體設計與架構篇 閱讀筆記

本文為「Clean Architecture 無瑕的程式碼:整潔的軟體設計與架構篇」第 5 章「物件導向程式設計」的閱讀筆記。

良好應用「物件導向」的概念,即可得到好的程式架構。

什麼是「物件導向」?

  • (X)答案一:資料與函式(功能)的結合。
  • (X)答案二:一種模擬真實世界的方式。
  • (O)答案三:封裝 + 繼承 + 多型。

物件導向的程式語言必須至少包含以下三件事

  • 封裝(encapsulation)
  • 繼承(inheritance)
  • 多型(polymorphism)

封裝

只對外部透露該透露的資訊,並且隱藏內部資訊,例如:實作細節。

但到底外部能知道多少細節,還有所有區別的。

  • 在 C 語言中,標頭檔(.h)和實作檔(.c)只放置必須的資訊。
  • 在 C++ 語言中,弱化了無標頭/實作 的完美分割,但提供三種關鍵字 public、protected 和 private 來做區分。
  • Java/C# 除了使用關鍵字做區分外,並且無標頭/實作檔的分離。

繼承

偽裝資料結構,宣告一個型別後,再宣告一個變數當成這個型別的衍生型別。

多型

多型是「指向函式的指標」的一種應用,也就是使用「函式指標」來實現多型。

透過指標的方法若沒有依照規定來實作,就會很難 debug -> 改用 OO 來解決這個問題。

依賴反向

呼叫樹(calling tree)經由流程控制而呼叫一個又一個的函式,而呼叫函式時必須呼叫它的名字(module name),這樣函式與函式間的相依程度是很高的。

解法是使用一個介面(interface)來達成「依賴反向」。這樣做的優點是能將「業務邏輯」與「程式邏輯」切分,也就是說,UI 與 DB 可以當成業務邏輯的 plugin,當 UI 與 DB 有變更時可以獨立部署而不影響業務邏輯。

原文  https://cythilya.github.io/2020/06/22/object-orient-programming/
正文到此结束
Loading...