ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • MVI - Part1
    Develop Diary 2020. 4. 6. 23:24

    MVI 용어 정리

    (1) Model

    상태를 지닌 데이터를 뜻한다. 예를 들어 데이터가 현재 준비 중인지, 로딩이 완료 되었는지 등을 표현할 수 있다.

    (2) View

    Activity, Fragment, Widget 등의 UI를 뜻한다.

    (3) Intent

    안드로이드의 Intent 객체와는 다른 개념입니다. MVI에서 Intent는 Event를 뜻한다.

    뷰 → 모델 혹은 모델 → 뷰로 Intent를 주고 받을 수 있다

    MVI 특징

    (1) Data와 View의 Context를 완전히 분리하자

    MVC 패턴을 시작으로 Data와 View를 분리하려는 시도는 지속되어 왔다. 수없이 많은 데이터와 상호작용 해야 하는 애플리케이션 개발에 유용했다. 하지만 Context까지는 분리시키지 못했다. 특히 MVC 패턴은 UI의 신호, Controller의 명령에 상당히 종속되어 있는게 사실이다.

    MVI 패턴은 객체의 역할과 종류 뿐만 아니라 Context 자체를 아에 분리시켜 관리한다는 패러다임을 가지고 있다. Data와 View는 어떤 존재에도 종속되어 있지 않으며 Intent(Event)에만 반응 할 뿐이다.

    (2) Model Event

    Model에서 Intent(Event)가 발생한다는걸 처음엔 받아들이기 어렵다. 그동안 Model은 고정되어 있는 Data를 지칭해왔기 때문이다. 다행히 Android JetPack 에 함께 포함된 LiveData를 공부하면서 Model이 변할 때 이벤트가 발생 할 수 있다는 점을 이해할 수 있다. Live Data에 대해선 차근차근 공부해보도록 하자.

    MVI 장점

    MVI의 장점은 3가지로 생각된다

    1. 데이터의 흐름이 정해져 있어서 관리하기 편하다
    2. View가 독립적인 Context를 가지고 있어서 모델을 위한 비동기 처리 등에 관심을 가지지 않아도 된다.
    3. 데이터와의 상호작용이 많아져도 안정적인 동작을 구현할 수 있다.

    PS. 다음편에선 MVI를 실제로 구현하기 위해 필요한 주요 개념을 알아보자.

    [이미지 출처: https://proandroiddev.com/mvi-a-new-member-of-the-mv-band-6f7f0d23bc8a]

Designed by Tistory.