-
데이터가 있는 여러 저장소(Local, Remote)를 추상화 후 중앙 집중처리 방식을 구성하여
동일 인터페이스로 데이터에 접속할 수 있도록 만들고,
데이터 로직을 분리시키기 위한 디자인 패턴
-
DataSource와 비즈니스 로직 사이를 중재
✓ Local DatsSource vs Remote DatsSource
장점
- ViewModel/Presenter - Model 간의 단방향 의존성 구조를 구현할 수 있다.
- ViewModel/Presenter 에서의 코드 수정 없이 일관된 인터페이스를 통해
데이터를 요청할 수 있다.
→ 어플리케이션의 전체적인 구조가 바뀌더라도 적용할 수 있는 유연한 아키텍쳐,
같은 로직의 중복을 최소화하는데 큰 이점
- 데이터 저장소의 데이터를 캡슐화할 수 있다. → 객체지향적인 프로그래밍에 적합
- 테스트가 용이해지고, 단위 테스트를 통한 검증이 가능하다.
클린 아키텍처에서 본 Repository패턴
- 데이터의 Mapping이 이루어지지 않으면 도메인 계층에 Data 계층 모델 의존성이 생기게 된다.
- Repository 가 DataSource 의 데이터를 전달해주고 다른 계층에서 그대로 사용한다면,
데이터 구조 변경 시 이를 바로 참조하고 있는 계층에서도 영향이 미치게 된다.
Mapper 활용
이러한 문제점을 해결하기 위하여 Mapper 를 사용
- Entity에 맞게 변환
- Mapper는 Data계층에서 수행
- Data계층의 Repository 내에서, mapper 를 활용하여 도메인 모델로 전달을 해주어
의존성 규칙을 깨지 않도록 함
✓ Usecase