투케이2K

68. (TWOK/ALGORITHM) [Android] 패턴 - MVI (Model-View-Intent) 개념 설명 본문

투케이2K 알고리즘

68. (TWOK/ALGORITHM) [Android] 패턴 - MVI (Model-View-Intent) 개념 설명

투케이2K 2022. 11. 11. 08:57

[환경 설정 및 설명]

OS : Android

설 명 : 패턴 - MVI (Model-View-Intent) 개념 설명


[설 명]

 

  • MVI 설명 :
    • MVI 는 자바스크립트 Cycle.js 의 [단방향성] 과 Cycle Nature 에서 영감을 받아 만들어진 안드로이드 아키텍처 패턴입니다
    • MVI 는 패턴 흐름 : User >> Intent >> Model >> View 로 이루어진 단방향성 (Intent 와 Model 사이에 SideEffects 가 추가 존재 가능)

  • MVI 패턴 각 컴포넌트 요약 설명 :
    • Model (모델) :
      • 앱의 상태와 데이터를 가지고 있는 불변 객체
    • View (뷰) :
      • 사용자가 볼 수 있는 화면 (Activity / Fragment)
    • Intent (인텐트) :
      • 앱의 상태를 변경하는 요청

  • MVI 각 컴포넌트의 세부 설명 :
    • Model (모델) :
      • 앱의 상태를 나타냅니다
      • 변수 값이나 UI의 버튼 클릭과 같은 변경 사항에 반응되어 새로운 상태로 전환 됩니다
      • View 가 화면에 렌더링 해야 하는 것들을 응답 (반환) 해줍니다 [ex : 서버로부터 받은 데이터, 프로그레스 진행률]
      • 모델은 단방향 흐름을 위해 변경 불가 해야합니다
    • View (뷰) :
      • Activity , Fragment 처럼 사용자에게 보여지는 화면입니다
      • 모델의 변경된 상태를 사용자에게 다시 렌더링해서 보여줍니다
    • Intent (인텐트) :
      • 사용자 또는 앱 내에서 발생하는 이벤트 동작을 나타냅니다
      • 앱의 상태를 변경하는 요청을 전달합니다
      • 모델은 인텐트를 통해서, 새로운 상태로 변화할 수 있습니다 (핸들러 포함 시 핸들러가 모델 데이터 업데이트 치고 >> 인텐트로 알림 전달 >> 인텐트는 알림 전달 받으면 뷰에 화면 갱신 요청)
    • Side Effect (핸들러) :
      • Intent 와 Model 사이에서 사이드 이펙트를 처리하는 숨겨진 컴포넌트입니다
      • 사용자가 Intent 발송 >> Model 입력 값으로 전달 할 수 있습니다
      • Background 작업, API 통신, I/O 작업 등 비즈니스 로직이 포함 될 수 있습니다

  • MVI 장점 및 단점 :
    • [장점] : 앱의 상태가 하나 뿐이라, 상호작용이 많아져도 상태 충돌이 없습니다
    • [장점] : 데이터의 흐름이 정해져 있어 흐름을 이해하고 관리하기가 쉽습니다
    • [장점] : 각각 값이 불변하기 때문에, 스레드에 있어 안정성을 가집니다
    • [단점] : 다른 MV 형재들에 비해 러닝커브가 높습니다
    • [단점] : 작은 변경도 모두 intent를 통해야 하고, 아주 작은 앱도 최소한의 intent와 model를 가져야 합니다
    • [단점] : model 을 업데이트 하기 위해 매번 새로운 인스턴스를 만들어야 합니다
 


 

반응형
Comments