- SOLID目的
- SOLID五項原則
- Single Responsibility Principle說明
- Open/Close Principle說明
- Liskov Substitution Principle說明
- Interface Segregation Principle(ISP)說明
- Dependency Inversion Principle(DIP)說明
目的:
寫出好維護、易擴充的程式架構
SOLID五項原則:
- Single Responsibility Principle
- Open/Close Principle
- Liskov Substitution Principle
- Interface Segaration Principle(ISP)
- Dependency Inversion Principle(DIP)
| Single Responsibility Principle(SRP) |
| 定義: 每一個class只負責一項功能 目的: 減少不必要的修改 使用前提: In code 使用方式: 撰寫時,盡量遵守此原則 例子: 對的例子、錯的例子 |
| Open/Close Principle(OCP) |
| 定義: 開放擴充,封閉修改 目的: 新增功能時,不必改舊code。維護既有功能時,不會影響其他class 使用前提: In code 使用方式: 撰寫時,盡量遵守此原則 例子: 對的例子、錯的例子 |
| Liskov Substitution Principle(LSP) |
| 定義: subclass一定要是superclass的subType 目的: 避免修改程式結構時,產生非預期的行為或狀態 使用前提: in code 使用方式: 撰寫時,盡量遵守此原則 例子: 對的例子、錯的例子(ex: 正方形繼承長方形) |
| Interface Segaration Principle(ISP) |
| 定義: client端不應該依賴它不需要的method 目的: 避免產生不必要的依賴(p.s. 看依賴關係就可以知道這個class能做什麼/不能做什麼) 使用前提: in code 使用方式: 撰寫時,盡量遵守此原則 例子: 對的例子、錯的例子 |
| Dependency Inversion Principle(DIP) |
| 定義: 高階module不應該依賴低階module。兩者都應該依賴於抽象。 抽象不應該依賴於細節。細節應該依賴於抽象。 目的: 避免產生不必要的依賴 使用前提: in code 使用方式: 撰寫時,盡量遵守此原則 例子: 對的例子、錯的例子 |