허원철의 개발 블로그

Android - MVP 패턴 본문

mobile

Android - MVP 패턴

허원철 2016. 12. 4. 21:50
이번 글은 안드로이드에서 가장 인기있는 패턴인 MVP에 대해 다뤄보도록 하겠습니다.

자바 스프링(백엔드)에서는 MVC 라는 패턴으로 굳혀져 있습니다.


하지만, 안드로이드에서는 MVC, MVP, MVVM 와 같은 다양한 구성을 하고 있습니다.

안드로이드는 특성 상, View와 Controller가 같이 합쳐 있는 형태입니다. 그렇기 때문에 MVC 같은 패턴이 되면, Activity에 굉장히 긴 줄의 소스가 적혀지게 되어 버립니다.

물론! 짧은 줄의 코드와 빠른 결과물을 얻기 위한 작업이라면.. MVC 를 사용하셔도 무방할 것이라고 생각합니다.



1. what ?
2. why ?
3. how ?

1. What ?
- 모든 처리를 Activity가 아니라 Presenter에 넘겨주는 형태

M (Model)       : 네트워킹, SharedPreferense 와 같은 데이터를 처리
V  (View)          : UI 처리와 이벤트를 통해서 Presenter에 넘기는 역할
P  (Presenter) : ① View로 부터 이벤트를 전달받아 필요한 처리

                    ② 다시 보여줘야할 데이터가 있다면 View 에 전달



2. Why ?
 - 개인으로나 팀으로나 어떤 프로젝트를 하던지 전체적인 구조가 필요하다고 생각합니다. 그 중 MVP는 안드로이드 개발자분들 사이에서 가장 많이 사용되고 있습니다.

① 코드의 양이 줄어듭니다.
② 유지보수가 쉬워집니다.
③ View 와 Model의 결합성이 낮습니다.
④ 테스트 코드 작성이 쉬워집니다.


3. How ?
 - 간단하게 MVP 패턴으로 RecyclerView를 만들어 보도록 하겠습니다.


① Gradle 설정
- RecyclerView 라이브러리를 추가하고, MVP 패턴을 사용하기 위해서 라이브러리가 필요한 것은 아니지만 View 바인딩을 편하게 하기 위해서 butterknife 를 추가하였습니다.
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:24.2.1'

    compile 'com.android.support:recyclerview-v7:24.2.1'
    compile 'com.jakewharton:butterknife:7.0.1'
}
② Model
- 데이터 처리를 합니다.


③ Presenter
- Model로 부터 받은 데이터를 가공하고 View에 넘겨줍니다.


④ View
- onResume() 에 데이터를 Presenter로 부터 전달 받아, 리사이클러뷰에 갱신 해줍니다.



⑤ 전체적인 흐름
View - onCreate()
View - onResume()
→ Presenter - onResume()
→ Model - getDatas()
← Presenter - onResume()
View - setDatas()

이상으로 기본적인 개념과 예시를 들어보며 MVP에 대해 적어봤습니다.
물론, 아직 부족한 부분이 많기 때문에 다른 개발자분의 블로그를 참고하시기 바랍니다.


'mobile' 카테고리의 다른 글

Android - Data Binding  (420) 2016.12.05
Comments