我大學不是主修 CS 或資訊相關科系,是畢業許多年之後才開始接觸程式開發,而後轉職成為軟體工程師。
一開始主要學習的語言是 JavaScript,學習過程中就會不時看到「物件導向」這四個字,看起來好像很重要,卻又跟我當下在寫的 JavaScript 好像沒有太大的關係,所以就一直沒有機會去深入探究。
直到進入新公司,開始寫 Angular 和 TypeScript 之後,發現程式世界跟我過去看到的有些不同,出現了類別、型別,還有很多過去沒看過的寫法(模式),突然發現自己似乎已經踏入了「物件導向程式設計」的世界而不自知。
當然如果不去深入理解它,還是能夠用自己的認知與觀念,來處理每天的開發任務。但如果能夠稍微了解一點,我想對於未來看到新事物或新問題的時候,也許就能看到以往看不到的那一面。
關於系列文
「幫自己搞懂物件導向和設計模式」的標題,很明顯就是說文章是寫給自己。網路上、各大書店當中都有數不盡關於物件導向的學習內容,但每當閱讀這些內容的時候,發現大家的解釋好像很類似卻又都不太一樣,讓我仍然感覺知其然卻不知其所以然,所以解決辦法就是,自己寫給自己好了。
這一系列文章的粗略架構為
- 物件導向的基本觀念
- 設計原則
- 設計模式
寫在前面
程式碼範例主要使用 TypeScript,但是系列文當中不會特別介紹 TypeScript 的語法。如果有興趣的話,可以參閱 TypeScript 新手指南,或是可以在文章底下留言發問,我會盡可能的回覆。
前期的範例為了要突顯型別 (Type) 的存在感,因此有些範例程式碼會先故意忽略型別。如果直接執行一定會報錯。
這次的系列文不是一套完整的教學文章,而比較會是我邊走邊想的學習筆記。內容當中若有遺漏或錯誤的地方,還請大家不吝提出討論。
鐵人賽發表網址:幫自己搞懂物件導向和設計模式