[Spring] 객체 지향 프로그래밍 설계 5대 원칙, SOLID
SOLID
객체지향적으로 설계할 때 지켜야 하는 5대 원칙
1. SRP(단일 책임 원칙),
2. OCP(개방-폐쇄 원칙),
3. LSP(리스코프 치환 원칙),
4. ISP(인터페이스 분리 원칙),
5. DIP(의존 역전 원칙)를 말하고 앞글자를 따서 SOLID 원칙이라고 부른다.
SRP (Single Responsiblity Principle)
단일 책임 원칙
- 모든 클래스는 각각 하나의 책임만 가져야 한다.
OCP (Open Closed Principle)
개방-폐쇄 원칙
- 확장에는 열려있고, 수정에는 닫혀있는,
기존 코드를 변경하지 않고서도(Closed) 기능을 추가할 수 있도록(Open) 설계가 되어야 한다.
LSP (Liskov Substitution Principle)
리스코프 치환 원칙
- 자식클래스는 부모클래스를 대체할 수 있어야 한다.
자식클래스는 부모클래스의 확장만 수행하도록 해야 LSP가 만족된다.
ISP (Interface Segregation Principle)
인터페이스 분리 원칙
- 하나의 일반적인 인터페이스보다 여러 개의 구체적인 인터페이스를 사용하는 것이 좋다.
DIP (Dependency Inversion Principle)
의존 역전 원칙
- 의존관계를 맺을 때 구체적인 클래스보다 좀 더 추상화된 클래스와 관계를 맺는 것이 좋다.
객체지향프로그래밍은 배워도 배워도 끝이 없는 것 같다.
OOP 그 자체에 머무르지 않고 구체적인 OOP 설계 방법을 알게 되었는데
이 5가지 원칙들은 전부 연결이 된다고 생각했다.
이 원칙들에 대해서 좀 더 확실한 이해를 돕도록
예시 코드도 직접 작성해 보면서 정확하게 숙지하도록 해야겠다.
참고 영상
- 개발자 장고님의 유튜브