반응형
회사 면접에서 면접관으로 들어가게 되면 대부분 물어보는 것 중 하나가 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에서는 데이터 처리 혹은 가공 과정이 들어가 있으면 안 된다. 끝
반응형
'Android > MVP' 카테고리의 다른 글
[Android] google mvp 샘플의 Injection.class 문제 (0) | 2021.02.25 |
---|---|
[Android] MVP 패턴에는 Contract 인터페이스가 꼭 필요할까? (0) | 2019.04.19 |