
컴포즈에 사용할 Composable Architecutre 설명(리엑트?)
이 글은 최근 유행하는 MVI (Model-View-Intent) 패턴과는 다른, 리액트의 Reducer, UiState, Effect, Action 개념을 포함하는 T Composable Architecture를 소개하는 글의 첫 번째 편입니다.
- TComposableArchitecture - 링크
- 2부 예고: Alert/Snackbar(Toast)의 로직 처리를 위한 고민
T는 글쓴이 이름의 첫 글자이며, 나머지는 Compose와 Architecture를 의미합니다.
Compose에서는 MVI가 가장 적합하다는 의견이 많지만, MVI를 소개하는 cycle.js.org에서는 다음과 같이 설명합니다.
cycle.js.org - Model-View-Intent - 링크
Model-View-Intent (MVI) is reactive, functional, and follows the core idea in MVC. It is reactive because Intent observes the User, Model observes the Intent, View observes the Model, and the User observes the View. It is functional because each of these components is expressed as a referentially transparent function over streams. It follows the original MVC purpose because View and Intent bridge the gap between the user and the digital model, each in one direction.
위를 번역하면 아래와 같은데,
모델-뷰-인텐트(MVI)는 반응적이고 기능적이며 MVC의 핵심 아이디어를 따릅니다. 인텐트가 사용자를 관찰하고, 모델이 인텐트를 관찰하고, 뷰가 모델을 관찰하고, 사용자가 뷰를 관찰하기 때문에 반응형입니다. 이러한 각 구성 요소는 스트림을 통해 참조적으로 투명한 함수로 표현되므로 기능적입니다. 뷰와 인텐트는 각각 한 방향으로 사용자와 디지털 모델 사이의 간극을 메우기 때문에 원래의 MVC 목적에 부합합니다.
핵심은 reactive, functional, MVC의 융합입니다. 지금 우리가 사용하는 MVI 패턴과는 다른 부분이 있는데, reactive와 functional은 같고 MVVM을 포함해서 UDF(단방향 데이터 흐름)가 더 적합하다고 보는 것이 좋아보인다.
이 글에서는
- 필자가 생각하는 Composable 구조는?