
| 원칙 | 설명 |
|---|---|
| **SRP | |
| (Single Responsibility Principle)** | 단일 책임 원칙 |
| 하나의 클래스는 하나의 책임만 가져야 한다. | |
| **OCP | |
| (Open/Closed Principle)** | 개방-폐쇄 원칙 |
| 소프트웨어 요소(클래스, 모듈, 함수 등..)는 확장에는 열려있으나 변경에는 닫혀 있어야 한다. | |
| **LSP | |
| (Liskov Substitution Principle)** | 리스코프 치환 원칙 |
| 만약 S가 T의 서브타입이라면, T는 어떠한 경고도 내지 않고 S로 대체가 가능해야 함 | |
| (부모 클래스는 언제나 자식 클래스로 대체될 수 있어야 함) | |
| **ISP | |
| (Interfacce Segregation Principle)** | 인터페이스 분리 원칙 |
| 클라이언트는 사용하지 않는 인터페이스에 의존하도록 강요되어서는 안 된다. | |
| **DIP | |
| (Dependency Inversion Principle)** | 의존관계 역전 원칙 |
| 상위 모듈이 하위 모듈에 직접 의존하는 것이 아니라, 둘 다 추상화에 의존하도록 설계해야 함. |
SOLID 원칙을 적용하면 나쁜 아키텍처로 인해 생기는 아래와 같은 문제들을 해결할 수 있다.
⇒ SOLID 원칙은 반드시 지켜야 하는 규칙이 아니라 아키텍처의 질을 높이기 위한 가이드라인일 뿐임 ‼️