디자인 패턴
디자인 패턴이란 프로그램을 설계할 때 발생했던 문제점들을 해결할 수 있도록 하나의 ‘규약’ 형태로 만들어 놓은 것
중복 코드 방지, 의존성 제거, 유지 보수 개선 등 코드의 더 좋은 구조를 만드는 것을 도와주는 코드 작성방법입니다.
MVP 패턴
MVC 패턴(Model-View-Presenter Pattern)이란 모델(Model), 뷰(View), 프리젠터(Presenter)로 이루어진 디자인 패턴입니다.
Model
애플리케이션의 데이터, 비즈니스 로직입니다. 내부저장소의 데이터일 수도 있고 API를 통해 데이터를 받아오는 로직일 수도 있죠.
View
MVC패턴과 마찬가지로 눈으로 보이는 영역입니다.
Presenter
view에서 요청 받은 데이터를 model에게 받아 view에게 전달해주는 부분입니다.
정리
MVC 패턴은 사용자 액션이 Controller로 들어오지만 MVP 패턴같은 경우에는 사용자 액션이 View로 들어오는 것을 보실 수 있습니다.
안드로이드로 예를 들면 MVC패턴의 Activity, Fragment는 view와 Controller를 겸하고 있고 이 부분에 로직이 들어갑니다. 하지만 MVP 패턴 같은 경우에는 Activity, Fragment는 온전히 View의 역할만 가지고 Present라는 1개의 View를 담당하는 객체가 있어 이 부분에 데이터를 요청하는 로직이 들어갑니다.
장점
- MVC패턴과 같이 각 컴포넌트(Model, View, Presenter)들이 명확하게 역할이 나누어져 있어 관리가 용이합니다.
- MVC패턴의 Model - View의 의존성이 제거되었습니다.
단점
- Presenter - View의 의존성은 남아있습니다.
- 프로젝트가 커질수록 의존성이 강해지고 코드가 많이 늘어납니다.
- Model과 View 간의 의존성을 제거하고 Presenter와 View 간의 의존성을 만드는 것은 겉보기에는 큰 의미가 없어 보일 수 있습니다. 그러나 Model과 View를 명확히 분리하는 것이 더 바람직한게, 서로 다른 목적을 가진 두 컴포넌트를 독립적으로 관리할 수 있게 하여 시스템의 유지보수성과 재사용성을 높이는 데 도움이 됩니다.
- View마다 Presenter를 만들어주어야 합니다.
- 설계를 잘하면 인터페이스를 통해 재사용할 수 있습니다.
※ 잘못된 정보, 혹은 다른 의견이 있다면 댓글로 말해주세요. 감사합니다.