MVP Pattern

MVP 패턴 !!


MVP 패턴이란?

  • 1990년대 초기 MS사에서 공개한, MVC 기반의 GUI를 처리하기 위한 패턴
  • MVC 패턴에 비해 Model과 View 간의 결합도를 낮추는데 초점을 맞춤.
  • View, Model, Presenter로 나뉨

    장점

  • MVC 패턴에 비해 클래스별 코드가 짧아짐.
  • 코드를 나눔으로써 TDD 주도 개발이 수월해짐
  • View와 Model 간의 구분 가능
  • Presenter의 역할을 통해 View와 Model 간의 결합도를 낮출 수 있음
  • 결합도가 낮아짐에 따라 새로운 기능 추가 또는 변경 등, 유지보수 및 확장성이 좋아짐.
  • View와 Model의 사용법이 분리되면서 Clean Code가 가능하다.
  • Presenter의 역할을 통해 Model과 View 간의 결합도를 낮출 수
  • 클래스의 역할에 따라 코드를 분배하는 패턴

    View, Presenter, Model

    View

    1. 어플리케이션의 인터페이스
  • 사용자에게는 View가 곧 Interface
    1. 실제 View에 접근하고 화면을 갱신하는 역할을 수행
    2. Presenter에 의존적
  • 이벤트를 Presenter에 전달
  • Presenter에서 데이터를 전달받아서 사용자에게 알맞은 화면 제공
  • Presenter가 보내주는 데이터에 따라 로딩 / 경고 / 대화창 등을 표현
    1. View는 또다시 Interface와 View Component(구현체)로 구분할 수있는데,
  • Interface
  • 사용자에게 보여질 기능을 정의
  • Presenter가 호출할 기능을 정의
    1. View Component
  • Interface에 정의한 기능의 구현 제공
  • 사용자 이벤트를 Presenter에 전달

    Presenter

    1. Model과 View를 연결 (매개체)
  • MVP에서 Presenter는 기능/흐름을 제공
  • 요구사항이 Presenter의 기능에 대응
    1. 사용자 요청에 반응
    2. View의 흐름 제어

      Model

    3. 내부적으로 사용되는 데이터를 저장하고, 처리하는 역할.
    4. ‘비즈니스 로직’과 ‘어플리케이션 데이터’
  • 인증
  • 위치 데이터
  • 그 외 네트워크 통신 등
    1. Presenter가 요청한 작업을 수행

      참조한 사이트 주소 !! 한번씩 읽어보시면 상세한 설명을 해주셔서 큰 도움이 됩니다. [MVP for Android: how to organize the presentation layer] - https://antonioleiva.com/mvp-android [Adapter, 누구냐 넌? - Data? View?] - https://medium.com/@jsuch2362/adapter-%EB%88%84%EA%B5%AC%EB%83%90-%EB%84%8C-data-view-2db7eff11c20 [Android MVP 무작정 따라하기] - http://thdev.tech/androiddev/2016/10/12/Android-MVP-Intro.html
      관련 예제 https://github.com/TonyChoiMS/DaggerExample (- Dagger Example의 경우 참고 git이 있었는데 찾지 못하고있습니다. 혹시 주소를 아시는분은 댓글로 알려주시면 감사하겠습니다!) https://github.com/antoniolg/androidmvp https://github.com/hitherejoe/Bourbon https://github.com/taehwandev/AndroidMVPSample https://medium.com/@nurrohman/a-simple-android-apps-with-mvp-dagger-rxjava-and-retrofit-4edb214a66d7
 Date: December 7, 2017
 Tags:  Programming

Previous
⏪ C++ Linked List.

Next
객체지향의 3요소 5원칙(Object-Oriented Programming) ⏩