Nuke Olaf - Log Store

Repository Pattern - 안드로이드 레포지토리 패턴이란? 본문

ComputerScience/[디자인 패턴]

Repository Pattern - 안드로이드 레포지토리 패턴이란?

NukeOlaf 2020. 3. 11. 15:41

mvp 의 Model 을 만들기 위해 구글의 architecture-sample 코드를 참고하는데, 구글 예제에서는 model 을 구현할 때 repository 라는 클래스를 만들어 사용하는 것을 볼 수 있었다. 쌩뚱맞게 model 에 왠 repositroy 가 있는거지? 하고 repository 가 무엇인지 찾아보니, 이게 레포지토리 디자인 패턴이라고 한다. mvp 패턴에서  Model 부분을 구현할때 데이터와 데이터에 액새스하는 로직을 분리하기 위해 레포지토리 패턴을 사용할 수 있다고 한다.

레포지토리 패턴이란 무엇이며, 왜 사용하고 어떻게 사용하는 것일까?

 

1. Repository Pattern 이란?

1.1 repository 이라는 단어의 의미

repository 는 "어떤것의 대량 저장소" 라는 의미를 갖고 있다.

repositroy 라는 단어는 소프트웨어 개발에서도 비슷한 의미로 사용된다.

소프트웨어 공학 분야에서의 repository 는 데이터의 요소, 프로세스, 입력, 출력 및 상호관계를 포함한 소프트웨어의 정보 데이터베이스라고 한다. 
참고 : https://www.webopedia.com/TERM/R/repository.html

즉, 데이터 뿐만 아니라 데이터에 관련된 로직또한 포함하고 있는 것을 repositroy 라고 부르는 듯 하다.

 

1.2 안드로이드에서의 Repository Pattern 이란?

레포지토리는 데이터 소스에 액세스하는 데 필요한 논리를 캡슐화하는 클래스 또는 구성 요소이다

즉, 데이터 그 자체인 data source 와 데이터관련 로직을 완전히 분리하는 기법이라고 할 수 있다.

 

2. Repository Pattern 을 사용하는 이유

Why the Repository Pattern ?

  • decouples the application from the data sources
  • provides data from multiple sources (DB, API) without clients being concerned about this
  • isolates the data layer
  • single place, centralized, consistent access to data
  • testable business logic via Unit Tests
  • easily add new sources

여러개의 데이터 소스에서 데이터를 가져올 수 있는 상황에서, 클라이언트가 어떤 데이터 소스를 사용해야할지 결정하지 않고, 레포지토리가 이를 결정하도록 할 수 있기 떄문이다.

 

 

참고 사이트>>>

https://medium.com/corebuild-software/android-repository-pattern-using-rx-room-bac6c65d7385

https://proandroiddev.com/the-real-repository-pattern-in-android-efba8662b754

https://dev-jinwoo.tistory.com/4

https://developer88.tistory.com/210

 

 

 

 

 

Comments