Skip to main content

Command Palette

Search for a command to run...

#oop

Articles tagged with #oop

  1. Lesson 17: SOLID 實戰篇 (2)-開放封閉 (OCP) - 擁抱變化而不修改舊碼

    接下來我們來講講SOLID的O - OCP,開放封閉原則。 核心觀念定義 如果說 SRP 是為了整理程式碼,那麼 OCP 就是為了保護程式碼。它是防止「新需求搞壞舊功能」的最強盾牌。 “Software entities (classes, modules, functions, etc.) should be open for extension, but closed for modification.” — Bertrand Meyer 「軟體實體應該對『擴充』開放,但對『修改』封閉。...

    Dec 21, 20253 min read11
  2. Lesson 15: 解耦的關鍵 - 依賴注入 (DI) 與 IoC Container

    從這一章開始,我們要從「把功能做出來 (Make it work)」進階到「把程式寫好 (Make it right)」。而區分 Rookie 與 Junior 最明顯的分水嶺,就在於是否懂得 「解耦 (Decoupling)」。 什麼是「耦合」 想像買了一台桌機,但它的滑鼠是「焊死」在主機板上的。如果想換成電競滑鼠?抱歉,要把整台主機板拆換掉。如果滑鼠壞了?抱歉,整台電腦送修。 這就是 「高耦合」。 在程式碼中,最常見的高耦合就是 在類別內部直接 new 另一個物件。 範例 假設我們有一個 O...

    Dec 17, 20254 min read11
  3. Lesson 14: 物件導向的靈魂-介面與抽象類別

    很多剛轉職或自學的工程師,最討厭看到的兩個關鍵字就是 interface 和 abstract。 心中一定有過這個疑問:「為什麼要寫一個『空的』函式放在那邊?直接把程式碼寫在 Class 裡面不好嗎?」 這堂課我們要來解開這個誤會。這不是為了增加程式碼行數,而是為了 「多型 (Polymorphism)」 與 「抽換 (Swap)」 的彈性。 繼承的盲點:為什麼不能只用 extends 假設我們在做一個「物流系統」,有「黑貓 (BlackCat)」和「新竹物流 (HCT)」。 直覺寫法通常是這樣...

    Dec 16, 20253 min read11