2026年10月20日 星期二

有 Creational Patterns 的原因,是否是有些狀況不適合直接用 new 建造出一個物件來用?

 沒錯!您的直覺非常準確,這正是整個創建型模式(Creational Patterns)核心要解決的根本問題。


在軟體開發中,直接使用 new 關鍵字來建立物件(例如 MyClass obj = new MyClass();)雖然直覺又方便,但在中大型系統或需要高度擴充性的架構中,直接使用 new 會帶來幾個致命的痛點。創建型模式的存在,就是為了將「物件的建立邏輯」與「物件的使用方式」徹底解耦。

直接使用 new 會遇到以下幾種不適合的狀況:

GoF(Gang of Four)的《Design Patterns》23 種設計模式的適用情境

 GoF(Gang of Four)的《Design Patterns》將 23 種經典設計模式分為三大類(創建型、結構型、行為型)。軟體工程界與許多經典著作(如 Martin Fowler 的重構書籍、Refactoring.guru、以及各種架構指南)早已將每種模式歸納出明確的適用情境(Use Cases)與解決的問題。


以下為您系統化整理這 23 種設計模式的適用情境:

2026年10月19日 星期一

Dependency Injection 使用時機

Dependency Injection 一個很不錯用的 Design Pattern。

在系統程式或一般的應用程式開發中,只要遇到「需要切換實作」、「需要與外部系統/硬體互動」或「需要進行單元測試(Unit Test)」的情況,都是利用依賴注入(DI)的絕佳時機。

除了你提到的身分驗證(Authentication)外,以下為你整理出最常見且實用的 5 大 DI 應用場景,並依功能類型進行分組:

2026年10月13日 星期二

用最簡單的範例說明,什麼是 Dependency Injection?

 這是一份為你快速掌握 Dependency Injection (DI,依賴注入) 核心精髓的重點整理。不囉嗦、不搬大部頭理論,我們直接從「為什麼需要它」到「怎麼實作」一次看懂。


1. 什麼是 Dependency Injection (DI)?

簡單來說,DI 是一種設計模式,用來解除物件之間的緊密耦合 (Tight Coupling)。

  • 白話文解釋:
    當一個類別(例如 Car)需要另一個類別(例如 Engine)才能運作時,傳統作法是讓 Car 自己去 new 一個 Engine。這就像是一輛車把引擎直接焊接死在車體裡,壞了很難換,也沒辦法測試。
    而 DI 的概念是:引擎在外部組裝好,然後「注入」到車子裡。車子只需要一個介面,不管你是V8引擎、電動馬達還是腳踏車鍊條,只要能裝進去就能跑。

2026年10月12日 星期一

說明 IoC 是什麼?它是我們設計系統的目標嗎?

 IoC(Inversion of Control,控制反轉)嚴格來說「不是」一種設計模式(Design Pattern),而是一種「設計原則」或「架構思想」。


它更像是背後的指導方針,而實踐這個方針需要透過特定的設計模式(例如最常見的 Dependency Injection,簡稱 DI)。

以下我們由淺入深,一步步拆解 IoC 的真面目:

有 Creational Patterns 的原因,是否是有些狀況不適合直接用 new 建造出一個物件來用?

  沒錯!您的直覺非常準確,這正是整個創建型模式(Creational Patterns)核心要解決的根本問題。 在軟體開發中,直接使用 new 關鍵字來建立物件(例如 MyClass obj = new MyClass(); )雖然直覺又方便,但在中大型系統或需要高度擴充性的...