- S 指的是 Single responsibility principle(SRP) 單一職責原則
- O 指的是 Open/close principle(OCP) 開放/封閉原則
- L 指的是 Liskov substitution principle(LSP) Liskov 替換原則
- I 指的是 Interface Segregation Principle(ISP) 介面隔離原則
- D 指的是 Dependency Inversion Principle(DIP) 依賴反轉原則
Single responsibility principle(SRP) 單一職責原則
一個 class 別應該只有一個職責,並且只應該因為一個理由而改變。
C# 程式碼範例:
以違反 SRP 的範例:
在這個範例中,User 類別同時負責使用者資料的管理、資料庫儲存、發送歡迎信和使用者驗證等多個職責。這違反了 SRP。
1 |
|
符合 SRP 的範例:
1 |
|
在這個範例中,我們將不同的職責分離到不同的類別中:
- User 類別只負責使用者資料的管理。
- UserRepository 類別負責資料庫儲存。
- EmailService 類別負責發送歡迎信。
- UserValidator 類別負責使用者驗證。
這樣做使得每個類別都只有一個職責,並且只因為一個理由而改變,符合了 SRP。
從前端的解度來理解
在前端開發中,我們經常使用元件 (Component) 的概念來構建使用者介面。一個元件通常負責渲染一部分的 UI,並處理與該部分 UI 相關的互動。這與 SRP 的概念非常相似。一個好的前端元件應該只負責單一的職責,例如:
顯示資料: 只負責接收資料並將其渲染到 UI 上。
處理使用者輸入: 只負責處理使用者在介面上的輸入事件,例如按鈕點擊、表單提交等。
發送 API 請求: 只負責向後端發送 API 請求並處理回應。