채용 공고에 보면 MVVM, MVP.. 아키텍처를 사용해본 사람들을 참 많이들 찾는데요.. 그것이 무엇인지!! 왜 필요한지!! 한 번 공부해보도록 합시다!
MVP
Model-View-Presenter 로 구성되어 있으며, MVVM 과 함께 MVC 를 대체하기 위한 대안책으로 가장 많이 사용됩니다. 가장 큰 특징은 MVC와 달리 Model 과 View의 의존성을 매개체인 Presenter 로 최소화 한다는 것입니다.
Model
- 비즈니스 로직을 구현합니다.
- 비즈니스 로직은 데이터를 만들고, 저장하고, 관리하는 로직을 의미합니다.
- MVC 의 Model 과 같습니다.
-View, Presenter등 다른 어떤 요소에도 의존적이지 않은 독립적인 영역입니다.
View
- 프리젠터로 부터 받은 데이터를 보여주는 것을 담당합니다. (UI 담당)
- 안드로이드의 경우 Activity 나 Fragment 에 해당합니다.
- Presenter 를 통해 데이터를 받기 때문에 Presenter 에 의존적입니다.
Presenter
- 모든 UI 이벤트를 처리하는 역할을 합니다.
- View가 유저의 input 을 받아서 Presenter에 전달하면, Model의 도움으로 데이터를 필터링하고, 그 결과를 View에게 전달합니다. (View 와 Model의 매개체 역할)
- 뷰에게 무언가를 표시하는 방법을 지시하는 대신, 표시할 내용만 전달합니다.
- MVC 와 달리 View와 Presenter는 완전히 분리되어 있고 interface 를 통해서 상호작용합니다.
- Model, View 모두에 의존적입니다.
장점
MVC 와 달리 View와 Model 의 의존성이 축소됨에 따라
- 기능 추가 및 변경이 편리해져서 확장성이 좋아집니다.
- 테스트 코드를 작성하기 편리해집니다.
단점
- 서비스 규모가 커짐에 따라 View 와 Presenter 의 의존성이 커지게 됩니다.
- MVC 의 Controller 처럼 Presenter에도 시간이 지남에 따라 추가 비즈니스 로직이 모이는 경향이 있습니다.
- MVVM 을 사용하면 위의 문제를 처음부터 해결할 수 있습니다.
출처
https://en.wikipedia.org/wiki/Business_logic
https://www.bacancytechnology.com/blog/mvc-vs-mvp-vs-mvvm
https://academy.realm.io/kr/posts/eric-maxwell-mvc-mvp-and-mvvm-on-android/