Unidirectional 은 uni(하나로 된) + directional(방향)의 뜻으로서 Unidirectional Data Flow 은 말 그대로 단방향 데이터 플로우 라는 의미를 가지는 디자인 패턴 이다. 많은 현대 프론트엔드 및 모바일 애플리케이션 아키텍처에서 중요하게 여겨지고 있다.

처음에 얼핏 봤을 때는 Undirected Graph(무방향 그래프) 의 Undirected 와 철자가 비슷하여, Undirectional 로 보았으나 그런 단어는 존재조차 하지 않는 듯 하다. 영어 참 어렵다.

UDF 는 UI 영역과 State 영역, event 라는 개념으로 설명이 가능하다.

qry

UDF 는 다음과 같은 하나의 방향으로 데이터가 흐른다.

  1. UI 영역에서 버튼 클릭과 같은 event 를 받아서 State 에 전달합니다. UI 영역이 아니더라도 시스템 이벤트에 의해 event 가 전달될 수 있습니다.
    • Event 예시: 사용자가 로그인 버튼 클릭, 데이터 갱신 요청, 드롭다운 메뉴에서 항목 선택 등
  2. Event 에 대응하여 State 가 업데이트 됩니다.
    • State 예시: 사용자 프로필 데이터, 로딩 상태, 에러 메시지 등
  3. UI 영역에서는 State 를 관찰(observe)하고 있습니다. 변경된 State 에 따라 UI 가 업데이트 됩니다.

도메인에 따라 Event 는 Action, Singal, State 는 Data, Model 등으로 표현될 수 있으나, 의미하는 바는 동일하다.

안드로이드 앱에서 이를 적용할 때, 꼭 ViewModel, LiveData 혹은 Flow 등의 기술이 적용되어야 하는 것 처럼 설명하는 글도 많은데, 이를 이용하면 쉽게 구현이 가능하지만 이 디자인 패턴을 구현하는 여러 가지 방법 중에 하나이지, 필수적인 것은 아니다.

Leave a comment