Nuke Olaf - Log Store
[MVP] 안드로이드에 mvp 패턴 적용하기(4) - Presenter 만들기 본문
<안드로이드에 mvp 패턴 적용하기 시리즈>
안드로이드에 mvp 패턴 적용하기(1) mvp 패턴이란?
안드로이드에 mvp 패턴 적용하기(2) Contract 작성
안드로이드에 mvp 패턴 적용하기(3) Model 정의
안드로이드에 mvp 패턴 적용하기(4) Presenter 만들기
안드로이드에 mvp 패턴 적용하기(5) Activity 에 View 구현
우리는 전의 포스팅에서 아래의 화면을 MVP 패턴으로 구현하기 위한 Contract 와 Model 을 작성했다.
이제 Presenter 와 View 를 만들어 구현할 차례이다.
이 포스팅에서는 Presenter 를 작성하는 방법에 대해 알아보도록 한다.
1. Contract.Presenter 를 상속받는 Presenter 클래스 만들기
우리는 전의 포스팅에서 다음과 같이 Contract 를 작성했었다.
interface Contract {
interface View {
// TextView 에 info 데이터를 보여준다
fun showInfo(info: JSONObject)
}
interface Presenter {
// onCreate 화면 초기화시에
// 저장된 데이터가 있는지 Model 에서 확인하고
// 확인한 결과에 따라 View 에 어떤 내용을 보일지 지시한다
fun initInfo()
// TextView 에 info 데이터를 보여주라고 View 에게 지시한다
fun setInfo(info: JSONObject)
// EditText 에 입력된 info 데이터를 저장하라고 Model 에게 지시한다
fun saveInfo(info: JSONObject)
}
}
이제, Contract.Presenter 인터페이스를 상속받는 Presenter 클래스를 만들 차례이다.
Presenter 의 생성자에는 View 와 Model 이 들어가며, Contract 에 정의했던 함수들을 작성해주면 된다.
class Presenter(
val view: Contract.View,
val repository: InfoRepository) : Contract.Presenter {
override fun initInfo() {
repository.getInfo(object: InfoDataSource.LoadInfoCallback {
override fun onInfoLoaded(info: JSONObject) {
view.showInfo(info)
}
override fun onDataNotAvailable() {
// 아무것도 하지 않음
}
})
}
override fun setInfo(info: JSONObject) {
view.showInfo(info)
}
override fun saveInfo(info: JSONObject) {
repository.saveInfo(info)
}
}
'ComputerScience > [디자인 패턴]' 카테고리의 다른 글
Repository Pattern - 안드로이드 레포지토리 패턴이란? (0) | 2020.03.11 |
---|---|
[MVP] 안드로이드에 mvp 패턴 적용하기(5) - Activity 에 View 구현 (0) | 2020.03.10 |
[MVP] 안드로이드에 mvp 패턴 적용하기(3) - Model 정의 (0) | 2020.03.10 |
[MVP] 안드로이드에 mvp 패턴 적용하기(2) - Contract 작성 (0) | 2020.03.10 |
[MVP] 안드로이드에 mvp 패턴 적용하기(1) - mvp 패턴이란? (0) | 2020.03.10 |
Comments