본문으로 건너뛰기
객체지향 설계 · 디자인 패턴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

SOLID 2: LSP, ISP, DIP 미니 퀴즈

선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.

0 / 2
  1. 문제 1“SOLID 2: LSP, ISP, DIP” 기능을 확장하기 좋은 구조로 설명한 것은 무엇인가요?
  2. 문제 2“SOLID 2: LSP, ISP, DIP”에서 ‘DI 컨테이너를 DIP로 오해’ 문제가 생겼습니다. 가장 알맞은 진단 또는 대응은 무엇인가요?
LESSON STATUS

학습을 마쳤나요?

직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.

8강. SOLID 2: LSP, ISP, DIP 미완료 상태