객체지향 설계 · 디자인 패턴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추상화와 인터페이스: 구현이 아닌 역할에 의존하기 미니 퀴즈
선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.
LESSON STATUS
5강. 추상화와 인터페이스: 구현이 아닌 역할에 의존하기 미완료 상태학습을 마쳤나요?
직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.