SOLID 원칙 완전 정복 — Kotlin & Spring Boot 실전 가이드

Robert C. Martin이 정리한 객체지향 설계의 5가지 원칙. 이론이 아닌 Kotlin + Spring Boot 코드로 각 원칙을 체득한다.


SOLID란?

원칙이름핵심 한 줄 요약
SSingle Responsibility클래스는 변경 이유가 하나여야 한다
OOpen/Closed확장에 열리고, 수정에 닫혀 있어야 한다
LLiskov Substitution하위 타입은 상위 타입을 완전히 대체할 수 있어야 한다
IInterface Segregation사용하지 않는 인터페이스에 의존하지 않아야 한다
DDependency Inversion고수준 모듈은 저수준 모듈에 의존하지 않아야 한다

왜 SOLID인가?

SOLID 위반 → 코드 변경 비용 증가
         → 버그 범위 예측 불가
         → 테스트 작성 어려움
         → 팀 협업 마찰 증가

SOLID 준수 → 변경이 국소화됨
         → 테스트가 쉬워짐
         → 재사용성 향상
         → 의존성이 명확해짐

학습 순서

순서원칙파일
1Single Responsibility (SRP)01-srp.md
2Open/Closed (OCP)02-ocp.md
3Liskov Substitution (LSP)03-lsp.md
4Interface Segregation (ISP)04-isp.md
5Dependency Inversion (DIP)05-dip.md

원칙 간 관계

SRP → 클래스 크기를 작게 유지
        ↓
OCP → 작은 클래스를 확장 가능하게 설계
        ↓
LSP → 다형성을 안전하게 사용
        ↓
ISP → 인터페이스를 역할에 맞게 분리
        ↓
DIP → 분리된 인터페이스로 의존성 역전

테스트 관점에서 본 SOLID

원칙테스트가 어려운 이유 (위반 시)테스트가 쉬워지는 이유 (준수 시)
SRP하나의 테스트가 너무 많은 걸 검증각 클래스 독립 테스트 가능
OCP새 기능 추가 시 기존 테스트 깨짐기존 테스트 유지, 새 테스트만 추가
LSP구현체마다 다른 예외/동작동일한 테스트 스위트로 모든 구현 검증
ISP불필요한 Mock 메서드 많음필요한 메서드만 Mock
DIP구체 클래스 직접 생성으로 테스트 불가인터페이스 주입으로 Mock 교체 가능

5 items under this folder.