본문으로 건너뛰기
객체지향 설계 · 디자인 패턴LESSON 05

추상화와 인터페이스: 구현이 아닌 역할에 의존하기

난이도중급 → 심화
예상 시간65분
선수지식이전 강의

5강. 추상화와 인터페이스: 구현이 아닌 역할에 의존하기

1. 이번 강의에서 해결할 문제​

Service가 FileStorage의 경로·포맷까지 알면 DB나 메모리 구현으로 바꾸기 어렵습니다. 반대로 메서드 하나마다 인터페이스를 만들면 탐색 비용만 늘어납니다.

2. 학습 목표​

3. 핵심 개념​

추상화는 중요한 정책을 남기고 변하기 쉬운 세부를 숨깁니다. 인터페이스 크기는 무조건 작게가 아니라 특정 클라이언트가 함께 필요로 하는 역할 응집도를 봅니다.

4. 구현​

TaskRepository.h
class TaskRepository {
public:
virtual ~TaskRepository() = default;
virtual std::optional<Task> find(TaskId id) const = 0;
virtual void save(const Task& task) = 0;
};

파일 경로, SQL, JSON은 구현 클래스에 남습니다. 도메인 Service는 Task와 ID만 압니다.

5. 코드가 동작하는 이유​

클라이언트 관점의 find/save 계약은 파일·메모리 구현을 대체할 수 있고 테스트 Fake도 작게 만듭니다.

6. 자주 하는 실수와 해결법​

7. 직접 실습​

8. 이해 점검 질문 3개​

9. 핵심 요약​

MINI QUIZ

추상화와 인터페이스: 구현이 아닌 역할에 의존하기 미니 퀴즈

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

0 / 2
  1. 문제 1“추상화와 인터페이스: 구현이 아닌 역할에 의존하기” 코드 리뷰에서 유지해야 할 설계 원칙은 무엇인가요?
  2. 문제 2‘대체 가능성 없는 추상화’ 실수를 판단할 때 “추상화와 인터페이스: 구현이 아닌 역할에 의존하기” 강의가 제시한 기준은 무엇인가요?
LESSON STATUS

학습을 마쳤나요?

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

5강. 추상화와 인터페이스: 구현이 아닌 역할에 의존하기 미완료 상태