티스토리 뷰
MVP란?
Model - View - Presenter로 이루어진 디자인 패턴으로
MVC의 View와 Model 사이의 의존성 문제를 해결하기 위해 나왔다.
- MVP 패턴의 핵심은 뷰와 모델 간의 상호작용을 다른 객체인 Presenter가 담당하도록 함으로 서로 간의 의존성을 최소화하는 것으로 MVC에서 Controller가 하는 역할을 Presenter가 한다고 보면 된다.
MVP의 간단한 과정을 살펴보면
1. User Input이 들어오면
2. View는 Presenter에 이벤트를 전달하고
3. Presenter는 이벤트에 맞게 Model을 구성하고
4. 업데이트된 Presenter의 데이터를 View에 업데이트 한다.
View, Presenter, Model의 역할
MVP 패턴 구성요소
뷰
- view에 대한 직접적인 접근을 담당
- 안드로이드에서 액티비티/프래그먼트는 뷰의 일부로 정의
- view에서 발생하는 이벤트는 직접 핸들링할 수 있으나 Presenter에 위임하도록 한다.
- 위임하는 방법: 액티비티가 뷰 인터페이스를 구현해서 Presenter에서 코드를 만들 인터페이스를 갖도록 하면 된다.
- 이렇게 하면 특정 뷰와 결합되지 않고 가상 뷰를 구현해서 간단한 유닛 테스트를 실행할 수 있다.
프리젠터
- 본질적으로는 MVC의 컨트롤러와 같지만, 뷰에 연결되는 것이 아니라 인터페이스로 연결된다는 점이 다르다.
- -> MVC가 가진 테스트 가능성 문제와 함께 모듈화/유연성 문제 역시 해결한다.
- 뷰와 모델 사이에서 자료 전달 역할
- 뷰와 1:1로 의존
모델
- 앱 데이터 및 상태에 대한 비즈니스 로직을 수행한다.
- + 비지니스 로직: 컴퓨터 프로그램의 규칙에 따라 데이터를 생성 표시 저장 변경하는 부분 / 데이터베이스, 표시장치 등 프로그램의 다른 부분과 대조되는 개념으로 쓰인다.
MVC 패턴의 장단점
장점
- View와 Model의 의존성이 없다.(MVC 패턴의 뷰와 모델의 의존성 문제 해결)
- 유닛 테스트 시 테스트 코드 작성이 편리해진다.
단점
- 애플리케이션이 복잡해질수록 View와 Presenter 사이의 의존성이 강해진다.
- 뷰와 프리젠터가 1:1 관계가 되면서 각각의 뷰마다 프리젠터가 존재하게 된다.
- -> MVP 패턴을 이용할 경우 비교적 코드 량이 많아질 수 있다.
참고
'안드로이드[Kotlin]' 카테고리의 다른 글
[Database] Room이란? (1) | 2022.02.16 |
---|---|
[안드로이드/Kotlin] 목록 화면을 만들기 위한 RecyclerView (0) | 2022.02.07 |
[안드로이드/Kotlin] 뷰 바인딩이란? (1) | 2022.01.22 |
[아키텍처 패턴] MVC 패턴이란? (0) | 2022.01.12 |
[Kotlin]코루틴 (0) | 2021.11.27 |