認識 Clean Architecture 的圓圈,從核心往外推。
在前幾天,我們學了好多「元件設計的原則」。
今天,我們要把這些積木放到一個更大的地圖裡——
這個地圖叫做 Clean Architecture(乾淨架構)。
Clean Architecture 長得像一個「同心圓」,
越靠近中間的程式越重要,也越穩定;
越靠外圍的程式,越容易改變、更新或被替換。
想像一顆「AI 糖果」,
中間是最重要的「口味核心」,
外面一層是「包裝紙」,
最外層則是「宣傳貼紙」。
這就像我們寫程式時,
核心要保持穩定,外層才能自由變化。
在 Clean Architecture 裡,我們通常會分成幾層:
層級 | 名稱 | 說明 | 範例程式 |
---|---|---|---|
最內層 | 🧠 Entities(實體層) | 最核心的商業邏輯、規則 | js<br>class User { constructor(name) { this.name = name } } |
第二層 | ⚙️ Use Cases(應用層) | 使用規則,像「登入」或「發文」的流程 | js<br>class LoginUseCase { execute(user, password) { /* 驗證邏輯 */ } } |
第三層 | 🧩 Interface / Adapter(介面層) | 把核心邏輯和外部世界連接起來 | js<br>class UserController { handle(req) { loginUseCase.execute(req.user) } } |
最外層 | 🌐 Framework / UI(外部層) | 真正與使用者互動的部分(例如網頁或手機介面) | vue<br><button @click="login()">登入</button> |
🌀 規則是:
外層可以依賴內層,但內層不能依賴外層。
也就是說,「糖果味道」不會去依賴「包裝紙」。
Clean Architecture 的圓圈就像一顆洋蔥或糖果。
最中心是穩定、可重用的規則;
外層則是容易變動、用來跟世界互動的部分。
如果有一天你要換掉使用的 AI 模型(例如從 GPT 換成 Gemini),
你覺得應該改在「哪一層」的程式裡?為什麼?
這些天我們學的原則都藏在這個圓圈裡: