Android/Architecture

MVP 패턴을 알아보기

봄석 2019. 8. 19. 20:24

MVP 패턴을 알아보기

 

MVP란??

MVC에서 파생된 디자인 패턴으로 안드로이드에서 주로 사용하고 있습니다.

MVP가 나오게 된 이유는, View와 Model을 완전히 분리해서 사용하기 위함입니다.

MVP는 Model의 역할인 비지니스 로직을

독립적으로 테스트할 수 있습니다. MVP 패턴의 각 구성에 대해서 자세히 알아보도록 하겠습니다.

 

 

 

MVP 패턴정의

 MVP는 위에서 말한대로 Model, View ,Presenter의 앞글자를 따서 이름이 지어졌습니다.

이 패턴의 핵심 아이디어는 사용자 인터페이스(view)와 비즈니스로직(model)을 분리하고, 서로간에 상호작용을

다른객체(Presenter)에 위임해 서로의 영향을 최소화 하는 것에 있습니다.

 

Model

  • 내부적으로 쓰이는 데이터를 저장, 처리
  • 비즈니스로직이라 불림
  • View와 Presenter에 의존적이지 않은 독립적인 영역

 

View

  • 사용자 인터페이스(UI)라 불리는 영역 ( Activity, Fragment 등)
  •  Model에서 처리된 데이터를 Presenter를 통해 받아 사용자에게 보여줌
  • 사용자 액션 및 Activity LifeCycle변화를 감지하여 Presenter에 보냄
  • Presenter를 이용하여 데이터를 주고받기 때문에 , Presenter에 의존적
  • View 에서 발생하는 이벤트는 직접 핸들링 할 수 있으나 Presenter 에 위임하도록 한다
  • 위임하는 방법은 액티비티가 뷰 인터페이스를 구현해서 Presenter에서 코드를 만들 인터페이스를 갖도록 하면 됩니다. 이렇게 하면 특정 뷰와 결합되지 않고 가상 뷰를 구현해서 간단한 유닛 테스트를 실행할 수 있음

 

Presenter

  • Model과 View 사이의 매개채
  • Model의 로직으로부터 나온 결과를 전달받아서 View에 보내 UI변경
  • 본질적으로는 MVC의 컨트롤러와 같지만, 뷰에 연결되는 것이 아니라 인터페이스로 연결된다는 점이 다름
  • 이에 따라 MVC가 가진 테스트 가능성 문제와 함께 모듈화/유연성 문제 역시 해결할 수 있음
  • 프리젠터(Presenter)의 역할을 한줄로 표현한다면 뷰(View)와 모델(Model) 사이에서 자료 전달 역할을 함

 

MVP 패턴 사용의 장점

  1. Model과 View간의 결합도를 낮춰줍니다.
  2. 새로운 기능을 추가하거나 변경할 필요가있을때 관련된 부분만 수정하면 되기 때문에 확장성이 좋아집니다.
  3. 테스트 코드를 작성하기 편리해집니다.

 

 

Mvp Sample Github 

https://github.com/qjatjr1108/MVP_MVVM_MVC_SAMPLE