본문 바로가기

안드로이드

[안드로이드] Repository 패턴

개요

Repository는 MVVM, MVP와 같은 아키텍쳐 패턴을 사용할 때 주로 등장하는 개념이다. 그리고 이 Repository의 사용 이유 역시 관심사의 분리이다. Repository는 데이터, 데이터 소스와 ViewModel(혹은 Presenter) 사이의 종속성을 줄여준다. 이는 유지보수 및 테스트가 쉬워진다는 의미이다. 마치 네트워크의 TCP/IP 5계층과 비슷하다고도 볼 수있다.

Repository는 데이터를 캡슐화한다.

 

그리고 안드로이드에서는 보통 다음과 같은 아키텍쳐를 사용한다.

 

View - ViewModel - Repository - DataSources(API, Room)

위처럼 구현하게되면 오직 Repository만 복수의 요소들과 종속되어 있고, activity, ViewModel은 오직 하위 계층 요소 단 한개에만 종속되었음을 볼 수 있다.

 

ViewModel에서는 UI를 업데이트 하는데 필요한 데이터를 소유하고 있다. 이때 이 데이터들을 Repository에게 요청한다. 여기서 ViewModel을 요청한 데이터가 Room에서 온건지 API 작업으로 온건지 전혀 알 필요가 없다. 이러한 작업은 모두 Repositoy에서 관장하기 때문이다. 

결국 ViewModel은 UI를 업데이트하기 위한 데이터를 제공하는 일에만 집중할 수 있게 된다.