금요일날 프로젝트를 마치고 졸려 죽겠다 라는 느낌을 처음 받으면서 고향으로 내려오고 블로그 쓰고 오늘도 블로그를 쓴 저에게 아주 큰 칭찬을 합니다 ㅎㅎ...
오늘은 Android Repository 패턴에 대해 공부를 하고 글로 정리를 해볼려고 합니다 .
왜 Repository을 공부를 하는가?
분한 마음에 이를 갈고 공부하고 정리해서 나중에 Naver 검색 API 에 적용해볼려고 해요!
일단 Repository 가 뭐냐?
이 그림을 잘보면 Repository에서 Remote Data Source 와 Model에 Data을 가져오는거 같아요.
음 이전에 대학생때 코드를 보면
이런식으로 코드를 짠 경험이 있어요
근데 Repository 패턴은 왜 좋은가 ?
view : 난 그냥 전시만 하네 ㅎㅎ
각자의 명칭에 맞게 책임을 부여합니다. 음 구글 예제 와 많은 분들의 repository 패턴을 만든것을 보니
interface MyRepository {
fun getCounter() : LiveData<Int>
fun increase()
}
class MyRepositoryImpl(counter: Int) : MyRepository {
private val liveCounter = MutableLiveData(counter)
override fun getCounter(): LiveData<Int> = liveCounter
override fun increase() {
liveCounter.value = liveCounter.value?.plus(1)
}
}
인터페이스를 상속받아 override 해서 그안에서 작업을 하네요 흠
그럼 제 Naver 검색 api 을 사용할때는 검색때 사용될 함수를 MyRepository 을 만들고 Impl 이란는 클래스를 viewModel Factory에 집어 넣어야 겠군요!
음 조금더 파봅시다 그럼 viewModel은 어떻게 repository에서 데이터가 온것을 알까요?
class MainViewModel(
_counter: Int,
private val savedStateHandle: SavedStateHandle,
private val repositoryImpl: MyRepositoryImpl
) : ViewModel() {
val counterFromRepo: LiveData<Int> = repositoryImpl.getCounter()
fun increase() {
repositoryImpl.increase()
}
음 다른분이 사용하신 viewModel을 보니 repositoryImpl에서 getCounter라는 함수를 접근하요
getCounter은 liveCounter을 return 을 하니깐요!
아 그럼 이제 전 Naver 검색 API 을 이런식으로 만들 계획입니다.
음 어느정도 틀이 만들어진거 같습니다!!!!!
그럼 다음 게시글에서는 한번 Repository 와 RepositoryImpl 을 직접 Naver 검색 API 에 맞춰 만들어보는 작업을 해보겠습니다 .
읽어주셔서 감사합니다
-피드백와 비판은 언제나 환영입니다-