「物件導向已死,服務導向當道」——這類論調常引發爭議。實則兩者運作於不同抽象層次,解決不同問題,並非零和博弈。
| 維度 | 物件導向 (OOP) | 服務導向 (SOA) |
|---|---|---|
| 關注點 | 程式內部:領域模型封裝、繼承、多型、設計模式 | 系統間:業務能力暴露、契約優先、鬆耦合、異構整合 |
| 抽象單位 | 類別、物件 | 服務、訊息 |
| 執行邊界 | 單一進程、記憶體內 | 跨進程、跨網路、跨組織 |
| 狀態管理 | 物件內部狀態 | 服務無狀態(原則上),狀態外部化 |
| 目標 | 程式碼複用、可維護性、擴充性 | 業務敏捷、系統互通、異構整合 |
OOP 解決「如何寫好單一系統的程式碼」,SOA 解決「如何讓多個系統協同工作」。兩者如同「磚塊」與「建築藍圖」,缺一不可。拋棄 OOP 轉向 SOA 如同「不造磚直接蓋房」,終將因內部結構混亂而崩塌。