『스프링입문을 위한 자바 객체지향의 원리와 이해』로 공부한 내용을 정리한 글입니다.
SOLID가 등장하게 된 배경
- 과거에는 절차지향적인 설계가 중심이었지만,
- 점점 소프트웨어 규모가 커지고 유지보수가 중요해지면서
- 객체 지향 설계(Object Oriented Design)라는 방법론이 각광받게 되었습니다.
그 흐름 속에서 로버트 C. 마틴(Robert C. Martin)이라는 유명한 소프트웨어 엔지니어가
2000년대에 좋은 객체 지향 설계를 위한 5가지 원칙을 정리했는데,
그 다섯 가지의 첫 글자를 따서 만든 것이 바로 SOLID입니다.
그리고 이 원칙들은 마이클 페더스(Michael Feathers)라는 또 다른 엔지니어가 명명했다고 되어 있습니다.
SOLID의 구성 5가지 원칙
S | Single Responsibility Principle | 단일 책임 원칙 |
O | Open/Closed Principle | 개방 폐쇄 원칙 |
L | Liskov Substitution Principle | 리스코프 치환 원칙 |
I | Interface Segregation Principle | 인터페이스 분리 원칙 |
D | Dependency Inversion Principle | 의존 역전 원칙 |
결합도와 응집도
응집도(Cohesion)
- 하나의 클래스/모듈이 하나의 책임 또는 목적에 집중할수록 응집도가 높다고 말합니다.
- 즉, 클래스가 한 가지 일에만 충실하다면 그건 좋은 설계입니다.
- 응집도가 높을수록 좋습니다. (High Cohesion)
결합도(Coupling)
- 모듈/클래스가 서로 얼마나 의존하고 연결되어 있는지를 나타내는 척도입니다.
- 다른 클래스의 변경이 이 클래스에 영향을 미친다면 결합도가 높다는 뜻입니다.
- 결합도는 낮을수록 좋습니다. (Low Coupling)
SOLID 원칙의 중요성
- SOLID 원칙을 지키면:
- 유지보수하기 좋고
- 테스트하기 쉬우며
- 기능을 확장하기 쉬운 소프트웨어 구조를 만들 수 있습니다.
- 특히, 시스템이 커질수록 코드가 변화에 유연하고, 의존성을 줄이며,
역할이 분명한 구조로 만들기 위한 설계 전략으로 SOLID가 매우 유용합니다.
비유
“건물 짓기 전에 설계도가 중요하듯이, 소프트웨어도 좋은 설계가 있어야 한다.”
- SOLID는 단순히 문법적인 테크닉이 아니라, 철학이며 사상입니다.
- 코딩 실력이 늘어날수록 결국 다시 돌아오는 주제가 바로 이 SOLID입니다.
'Spring > 스프링입문을 위한 자바객체지향의 원리와 이해' 카테고리의 다른 글
OCP - 개방 패쇄 원칙 (0) | 2025.07.02 |
---|---|
SRP - 단일 책임 원칙 (0) | 2025.07.02 |
인터페이스 (0) | 2025.07.01 |
instanceof 연산자 (0) | 2025.07.01 |
final 키워드 (0) | 2025.07.01 |