본문 바로가기

Android/MVP

[Android] MVP 패턴에서 각각의 역할

반응형

회사 면접에서 면접관으로 들어가게 되면 대부분 물어보는 것 중 하나가 MVC, MVP, MVVM 중 하나인 것 같다. 본인들 포트폴리오에도 써 있는 부분이기도 하기 때문에 검증을 하려고 하다보니 물어보게 되는 것 같은데... 생각보다 각각의 역할에 대해 제대로 대답한 지원자들이 없었던 것 같다. 신입들은 물론이고 그래도 년차가 쌓이신 분들도 간혹 잘못 알고 계신 분들이 많은 것 같아 정리하고자 한다.

M(Model) - 비즈니스 로직 담당
- 데이터 처리 및 가공
P(Presenter) - UI 비즈니스 로직 담당
- 데이터 처리 혹은 가공이 여기서 일어나면 안 됨
- 데이터가 필요한 경우 : View로부터 입력을 전달받음 -> 비즈니스 로직이 필요한 경우 Model에 요청 -> UI 비즈니스 로직에 따라 View를 조작
- 데이터가 필요 없는 경우 : View로부터 입력을 전달받음 -> UI 비즈니스 로직에 따라 View를 조작
V(View) - UI를 담당
- 사용자로부터 입력을 받음
- 결과를 보여줌
- 보통은 Activity, Fragment가 되는 경우가 많음

질문을 'UI에서 필요한 데이터는 어디서 만들면 되나요?' 이런 식으로 물어보는데 대부분 Presenter에서 가공한다고 대답하는 경우가 많았다. 답은 Model이다. MVC, MVP, MVVM 모두 Model에 대한 역할과 의미는 동일하다. 만약 아직도 이 부분이 이해가 안 된다면 아래 링크를 통해 Google 아키텍처 샘플 MVP 프로젝트를 보자. 보면 Repository가 Model인데 그 부분에서만 데이터 리스트를 조작하거나 생성하는 것을 볼 수 있다. Presenter 혹은 View에서는 데이터에 대한 어떠한 가공이나 생성 및 처리가 일어나지 않는 부분을 확인할 수 있다.

 

https://github.com/android/architecture-samples/tree/todo-mvp

 

정리하면 Model에서만 데이터 처리 및 가공이 가능하고 Presenter에서는 데이터 처리 혹은 가공 과정이 들어가 있으면 안 된다. 끝

반응형