피드로 돌아가기
Dev.toBackend
원문 읽기
LSP, ISP, DIP 적용을 통한 결합도 제거 및 확장 가능 구조 설계
LLD Foundations: SOLID Principles (Part 2 — LSP, ISP, DIP)
AI 요약
Context
SRP, OCP 적용 후에도 상속 구조의 오작동, 불필요한 인터페이스 구현 강제, 모듈 간 Tight Coupling으로 인한 유지보수 비용 증가라는 설계 한계 직면.
Technical Solution
- Liskov Substitution Principle 기반으로 하위 클래스가 기본 클래스의 행위를 보장하도록 추상화 계층을 재정의하여 상속 오류 제거
- Interface Segregation Principle을 통한 대형 인터페이스의 세분화로 클라이언트가 불필요한 메서드 구현을 강제당하는 오버헤드 해결
- Dependency Inversion Principle 적용으로 고수준 모듈이 저수준 구현체가 아닌 Interface에 의존하게 하여 모듈 간 결합도 최소화
- 구현체(Concrete Implementation) 결정을 호출자(Caller)에게 위임하여 NotificationService와 같은 서비스 로직의 단순성 유지
- 행위 중심의 Abstraction 설계를 통해 새로운 전송 채널이나 기능 추가 시 기존 코드 수정 없이 확장 가능한 구조 확보
실천 포인트
1. 하위 클래스가 부모 클래스의 모든 메서드를 정상적으로 수행하는지 검증 (LSP)
2. 인터페이스가 너무 많은 책임을 가지고 있지 않은지 확인하고 필요 시 분리 (ISP)
3. 클래스 간 의존성 관계가 구체적인 클래스가 아닌 인터페이스를 향하고 있는지 검토 (DIP)