객체지향 설계 · 디자인 패턴LESSON 08
SOLID 2: LSP, ISP, DIP
난이도중급 → 심화
예상 시간65분
선수지식이전 강의
8강. SOLID 2: LSP, ISP, DIP
1. 이번 강의에서 해결할 문제
읽기 전용 저장소가 save에서 예외를 던지거나, 한 클라이언트가 쓰지 않는 메서드까지 구현하면 인터페이스 이름은 같아도 대체 가능하지 않습니다.
2. 학습 목표
3. 핵심 개념
LSP는 자식이 부모 사용처에서 기대 행동을 깨지 않는 것입니다. ISP는 무조건 한 메서드 인터페이스가 아니라 클라이언트가 함께 필요로 하는 역할 단위입니다. DIP는 고수준 정책과 저수준 세부 모두 안정된 역할 계약에 의존하게 합니다.
4. 구현
역할 분리
class TaskReader { public: virtual ~TaskReader() = default;
virtual std::optional<Task> find(TaskId) const = 0; };
class TaskWriter { public: virtual ~TaskWriter() = default;
virtual void save(const Task&) = 0; };
조회 화면은 Reader만, 완료 유스케이스는 Reader와 Writer를 받습니다.
5. 코드가 동작하는 이유
읽기 전용 구현이 불가능한 save를 가장할 필요가 없고 클라이언트 의존성이 실제 역할과 일치합니다.
6. 자주 하는 실수와 해결법
7. 직접 실습
8. 이해 점검 질문 3개
9. 핵심 요약
MINI QUIZ
0 / 2SOLID 2: LSP, ISP, DIP 미니 퀴즈
선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.
LESSON STATUS
8강. SOLID 2: LSP, ISP, DIP 미완료 상태학습을 마쳤나요?
직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.