코딩 개념 Story

MVI (Model-View-Intent) 패턴

WhiteDuck 2023. 12. 6. 12:49

MVI (Model-View-Intent) 패턴

  • Model: 애플리케이션의 상태를 유지하고, 데이터를 처리하는 부분입니다. 사용자의 액션에 따라 상태를 갱신하고, 뷰에 필요한 데이터를 제공합니다.
  • View: 사용자에게 데이터를 보여주는 역할을 합니다. 액션을 받아 처리하고, 모델의 상태를 표시합니다.
  • Intent: 사용자의 액션을 나타내는 객체로, View에서 생성되어 Model에 전달됩니다. 액션에 대한 정보를 담고 있으며, Model의 상태 갱신을 위한 명령을 전달합니다.

MVI 패턴은 단방향 데이터 흐름을 가지며, 상태 관리를 중심으로 합니다. 사용자의 액션은 Intent로 전달되고, Model은 이를 기반으로 상태를 변경하고, 변경된 상태는 View에 반영됩니다. 이를 통해 상태 관리와 UI 업데이트를 명확하게 분리할 수 있습니다.

 

 

 

MVI 패턴상태 관리와 사용자 인터랙션을 명확하게 분리하여 복잡성을 줄일 수 있습니다.

View오직 사용자의 액션을 받아 표시하는 역할을 하고,

Model은 순수한 로직과 상태를 관리합니다.

Intent를 통해 액션을 명시적으로 전달하므로, 액션의 처리 과정을 추적하고 디버깅하기 용이합니다.

 

 

MVI (Model-View-Intent) 패턴과 MVC (Model-View-Controller) 패턴의 차이

 

 모두 소프트웨어 개발에서 사용되는 아키텍처 패턴입니다. 이들 패턴은 각각 다른 목적과 구성 요소를 갖고 있으며 다음과 같은 차이점이 있습니다:

 

 

1. 역할 및 책임:

  • MVC:
    • Model: 데이터와 비즈니스 로직을 처리합니다.
    • View: 사용자에게 데이터를 보여주는 역할을 합니다.
    • Controller: 사용자의 입력을 처리하고 Model과 View 사이의 상호작용을 조정하는 역할을 합니다.
  • MVI:
    • Model: 애플리케이션의 상태를 유지하고, 데이터를 처리하는 부분입니다.
    • View: 사용자에게 데이터를 보여주는 역할을 합니다.
    • Intent: 사용자의 액션을 나타내는 객체로, View에서 생성되어 Model에 전달됩니다.

2. 데이터 흐름 방향:

  • MVC: 양방향 데이터 흐름이며, 사용자의 입력 및 Model의 업데이트에 의해 View가 업데이트됩니다.
  • MVI: 단방향 데이터 흐름이며, 사용자의 액션을 Intent로 전달하고, Model은 이를 기반으로 상태를 변경하고, 변경된 상태는 View에 반영됩니다.

3. 상태 관리:

  • MVC: 상태는 Model에 의해 관리되며, View는 Model의 데이터를 표시합니다.
  • MVI: 상태는 Model에 의해 유지되며, View는 상태를 표시합니다.

4. 테스트 용이성:

  • MVC: View와 Controller는 분리되어 테스트하기 쉽습니다. Model은 비즈니스 로직을 포함하므로 테스트하기에 어려울 수 있습니다.
  • MVI: View와 Model은 분리되어 테스트하기 쉽습니다. Intent를 통해 액션을 명시적으로 전달하므로 테스트 용이성이 높습니다.

MVC 패턴은 데이터와 비즈니스 로직을 중심으로 구성되며, MVI 패턴은 상태 관리와 사용자 인터랙션을 중심으로 구성됩니다. 두 패턴은 각각의 장단점과 적용 가능한 상황이 있으며, 개발자는 프로젝트 요구사항과 목표에 따라 적절한 패턴을 선택할 수 있습니다.

반응형

'코딩 개념 Story' 카테고리의 다른 글

디자인 패턴(MVC, MVVM, MVP)  (1) 2023.12.04
[ GIT ] 초기 설정  (0) 2016.08.25
[ GIT ] git 설치  (0) 2016.08.24
Spring 1차 용어 정리  (0) 2016.04.02
코딩 인터뷰에 관한 공부 [1장]  (0) 2015.12.01