728x90
안드로이드에는 다양한 아키텍처 구조가 존재한다.
오늘은 MVP 패턴에 대해서 공부해보려고 한다.
MVP는 간단하게 Model, View, Presenter의 약자입니다.
MVP의 구조는 MVC와는 다르게 UI(View)와 비즈니스 로직(Model)을 분리하고, 서로 간에 상호작용을 다른 객체(Presenter)에 그 역할을 줌으로써 서로의 영향(의존성)을 최소화하는 것에 있습니다.(MVP의 등장 배경)
Model, View, Presenter의 특징을 정리해보자
- Model
- 프로그램 내부적으로 쓰이는 데이터를 저장하고, 처리하는 역할을 함.(비즈니스 로직)
- View 또는 Presenter 등 다른 어떤 요소에도 의존적이지 않은 독립적인 영역임.
- View
- UI를 담당하며 안드로이드에서는 Activity, Fragment가 대표적인 예.
- Model에서 처리된 데이터를 Presenter를 통해 받아서 유저에게 보여줌.
- 유저 액션(Action) 및 액티비티 라이프사이클 상태 변경을 주시하며 Presenter에 보내는 역할임.
- Presenter를 이용해 데이터를 주고받기 때문에 Presenter에 매우 의존적임.
- Presenter
- Model과 View사이의 매개체.
- 모델과 뷰를 매개체라는 점에서 Controller와 유사하지만, View에 직접 연결되는 대신 인터페이스를 통해 상호작용 한다는 점이 다름.
- 인터페이스를 통해 상호작용 하므로 MVC가 가진 테스트 문제와 함께 모듈화/유연성 문제 역시 해결할 수 있음.
- 뷰에게 표시할 내용(Data)만 전달하며 어떻게 보여줄지는 View가 담당.
MVP의 장점
- Model 과 View 간의 결합도를 낮추면, 새로운 기능 추가 및 변경을 해야 할 때 관련된 해당 부분만 코드 수정하면 되기 때문에 확장성이 좋아진다.
- 유닛테스트시 테스트 코드를 작성하기 편리해지기 때문에 더 쉽게 안전한 코딩이 가능하다.
- UI와 Data 각각 파트를 나누기때문에 할 일이 명확해지고 그 결과로 쉽게 빠른 코딩이 가능하다.
MVP의 단점
- 앱이 복잡해질수록 View와 Presenter 사이의 의존성이 강해진다.
- MVC의 패턴처럼 Presenter도 어느 정도의 시간이 지남에 따라 추가 비즈니스 로직이 집중된다.(비대해진다.)
- 이로인해 Presenter가 거대해진다면 동시에 문제를 다루기도 어렵고, 발생하기도 쉬우며, 서로간의 분리또한 까다로워 진다.
728x90
'Android > Study' 카테고리의 다른 글
[Android] Android 란? (0) | 2023.01.04 |
---|---|
[Android] MVVM 패턴 이란? (2) | 2023.01.01 |
[Android] MVC 패턴이란? (0) | 2023.01.01 |
[Android] Notification(노티피케이션) (0) | 2022.10.18 |
[Android] CustomView 추가 실습 (0) | 2022.09.28 |