物件導向程式設計 | 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/

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » 物件導向程式設計 | Clean Architecture 無瑕的程式碼:整潔的軟體設計與架構篇 閱讀筆記

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址