-
[아키텍처] MVP Pattern의 이해Programming/Android 2020. 9. 1. 02:36
MVC 패턴 단점
- MVC 패턴은 UI와 비즈니스 로직이 분리되지 않아 액티비티(컨트롤러)가 방대해진다.
- 컨트롤러는 뷰와 모델에 의존적이고 뷰는 모델에 의존적이라 결합도가 높아 유닛테스트가 거의 불가능하다.
- 궁극적으로 유지보수비가 증가하고 생산성이 저하되는 것이다.
MVP 패턴은 UI와 비즈니스 로직을 분리시키는데 초점을 둔다.
MVP 다이어그램 - 뷰는 사용자에게 화면을 보여주고, 사용자는 뷰와 상호작용한다.
- 뷰는 사용자 이벤트를 프레젠터에게 전달하고, 프레젠터는 데이터(모델)를 업데이트(저장/수정/삭제)한다.
- 프레젠터는 변경된 모델(데이터를) 가져와서 UI를 업데이트(화면 갱신) 한다.
장점
- 프레젠터는 뷰와 모델의 인스턴스를 가지며 이 둘을 연결해 주는 역할을 하므로 Presenter와 View는 1:1 관게를 갖는다.
- 따라서 뷰와 모델 간 의존성이 없고, UI와 비즈니스 로직을 분리하여 유닛 테스트가 수월해진다.
단점
- 하지만 뷰가 늘어 날 때마다 프레젠터도 같이 늘어나 클래스가 많아져서 기능이 추가될 때마다 프레젠터가 거대해진다.
*Contract Class
- MVP 디자인 패턴을 구현할 때 가장 먼저 해야할 일은 구성요소의 역할과 관계를 정의하는 것이다.
- 구성요소는 View와 Presenter 정도로 정의한다.
*View의 역할
- View Interface에 정의된 메서드를 재정의하여 데이터를 화면에 표시한다.
- 뷰 인터페이스는 액티비티 또는 프래그먼트에서 정의한다.
- Presenter에 생명 주기 및 클릭 이벤트에 대한 내용을 통지한다.
- View는 Presenter에 의해서만 참조된다.
'Programming > Android' 카테고리의 다른 글
REST API : 웹상의 자원에 접근하는 방식을 정의한 아키텍처 (0) 2020.09.13 안드로이드 앱 개발 공부할 때 Rx라이브러리, 아키텍처, UI 디자인 필 수 일까 (0) 2020.09.12 [Android] ViewHolder (0) 2020.08.14 안드로이드 빌드 도구, Gradle (0) 2020.08.12 [Android Style Guide] Util/Helper/Manager (0) 2020.06.03