iT邦幫忙

2025 iThome 鐵人賽

DAY 21
0

認識 Clean Architecture 的圓圈,從核心往外推。

今日主題:

在前幾天,我們學了好多「元件設計的原則」。
今天,我們要把這些積木放到一個更大的地圖裡——
這個地圖叫做 Clean Architecture(乾淨架構)

Clean Architecture 長得像一個「同心圓」,
越靠近中間的程式越重要,也越穩定;
越靠外圍的程式,越容易改變、更新或被替換。

範例故事:

想像一顆「AI 糖果」,
中間是最重要的「口味核心」,
外面一層是「包裝紙」,
最外層則是「宣傳貼紙」。

  • 如果你要換廣告貼紙(UI 介面),
    不需要改到糖果的味道。
  • 但如果你改了糖果內餡(核心邏輯),
    所有包裝都要重新設計!

這就像我們寫程式時,
核心要保持穩定,外層才能自由變化。

在程式中的應用是什麼?

在 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),
你覺得應該改在「哪一層」的程式裡?為什麼?

延伸小補充:

這些天我們學的原則都藏在這個圓圈裡:

  • REP / CCP / CRP:幫你分出每層要放什麼。
  • SDP / SAP:決定哪些層該穩定、哪些該有彈性。
  • ADP:讓外圍的 AI 模組可以自由替換,不會破壞核心。

上一篇
Day 20:元件回顧:積木疊起來了嗎?
下一篇
Day 22:Entities:AI 的知識核心
系列文
Clean Architecture 無瑕的程式碼:國中生阿吉的暑期閱讀筆記24
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言