Skip to main content

Command Palette

Search for a command to run...

#solid-principles

Articles tagged with #solid-principles

  1. Lesson 20:適配器模式 - 讓不相容的介面也能合作

    這堂課我們正式進入 - 結構型模式 的領域。 如果不把這「創建型」模式(工廠、建造者)搞定,我們很難有東西可以「結構化」。但現在我們已經學會怎麼優雅地產生物件了,接下來會遇到的問題通常是:「這個新來的物件,跟我的舊系統插頭不合怎麼辦?」 這就是 Adapter Pattern 的主場。 核心概念:轉接頭 從台灣帶了筆電(三孔插頭)出國旅行。 牆上的插座 (Client 期待的介面):可能是兩孔圓形,或兩孔扁形。 筆電插頭 (Adaptee 被適配者):兩孔扁型,一孔圓形。 問題:插不進去,無法供...

    Dec 29, 20252 min read8
  2. Lesson 19: 工廠模式 與 建造者模式

    工廠模式 在 SOLID 的課程後,我們已經知道「依賴注入」的重要性:我們不應該在類別內部直接 new 依賴的物件。 但問題來了:「那到底誰負責 new?」 總得有人負責把物件生出來吧?如果到處散落著 new, 當需求變更時,我們還是要改一堆地方。 在Lesson 17 開放封閉 (OCP) 的時候我們有說道:利用策略模式來進行解偶,並利用”工廠模式”來決定策略的選擇(實作 實例化物件),但當時對於工廠模式並沒有去詳細說明,這裡我們一起來看看工廠模式的相關細節。 核心概念:為什麼需要「工廠」 ...

    Dec 24, 20255 min read14
  3. Lesson 18: SOLID 實戰篇 (3):完結LSP、ISP 與 魔王DIP

    關於LSP 接下來進到L了,這裡的L指的就是里氏替換原則 (LSP , Liskov Substitution Principle),這是許多後端工程師覺得最「抽象」的一個原則,但它其實是判斷「繼承 (Inheritance) 是否被濫用」最重要的標準。 什麼是里式替換 (LSP)? 「子類別 (Subclass) 必須能夠替換掉它們的父類別 (Base Class),且程式的行為不會發生錯誤。」 簡單來說,如果程式碼依賴於一個父類別(或介面),那麼隨便塞一個該父類別的「子類別」進去,程式都...

    Dec 23, 20254 min read13
  4. 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
  5. Lesson 16: SOLID 實戰篇 (1)-單一職責 (SRP) 與 高內聚

    接下來我們要進到SOLID的實戰,這堂課我們將專注於最基礎、但也最重要的第一條原則:SRP (單一職責原則),並探討它與 高內聚 (High Cohesion) 的緊密關係。 核心觀念定義 關於單一職責原則 "A class should have one, and only one, reason to change." — Robert C. Martin (Uncle Bob) 「一個類別應該只有一個『改變的理由』。」 很多人誤以為 SRP 意思是「一個類別只做一件事 (Do one ...

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

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

    Dec 17, 20254 min read11