Notice
Recent Posts
Recent Comments
Link
투케이2K
8. (TWOK/STUDY) [투케이 학습] : MVI (Model-View-Intent) 형태 로직 구현 - Android 본문
투케이2K 학습정리
8. (TWOK/STUDY) [투케이 학습] : MVI (Model-View-Intent) 형태 로직 구현 - Android
투케이2K 2023. 8. 14. 23:35[제 목]
[투케이 학습] : MVI (Model-View-Intent) 형태 로직 구현 - Android
[설 명]
- MVI 설명 :
- MVI 는 자바스크립트 Cycle.js 의 [단방향성] 과 Cycle Nature 에서 영감을 받아 만들어진 안드로이드 아키텍처 패턴입니다
- MVI 는 패턴 흐름 : User >> Intent >> Model >> View 로 이루어진 단방향성 (Intent 와 Model 사이에 SideEffects 가 추가 존재 가능)
- MVI 패턴 각 컴포넌트 요약 설명 :
- Model (모델) :
- 앱의 상태와 데이터를 가지고 있는 불변 객체
- View (뷰) :
- 사용자가 볼 수 있는 화면 (Activity / Fragment)
- Intent (인텐트) :
- 앱의 상태를 변경하는 요청
- Model (모델) :
- MVI 각 컴포넌트의 세부 설명 :
- Model (모델) :
- 앱의 상태를 나타냅니다
- 변수 값이나 UI의 버튼 클릭과 같은 변경 사항에 반응되어 새로운 상태로 전환 됩니다
- View 가 화면에 렌더링 해야 하는 것들을 응답 (반환) 해줍니다 [ex : 서버로부터 받은 데이터, 프로그레스 진행률]
- 모델은 단방향 흐름을 위해 변경 불가 해야합니다
- View (뷰) :
- Activity , Fragment 처럼 사용자에게 보여지는 화면입니다
- 모델의 변경된 상태를 사용자에게 다시 렌더링해서 보여줍니다
- Intent (인텐트) :
- 사용자 또는 앱 내에서 발생하는 이벤트 동작을 나타냅니다
- 앱의 상태를 변경하는 요청을 전달합니다
- 모델은 인텐트를 통해서, 새로운 상태로 변화할 수 있습니다 (핸들러 포함 시 핸들러가 모델 데이터 업데이트 치고 >> 인텐트로 알림 전달 >> 인텐트는 알림 전달 받으면 뷰에 화면 갱신 요청)
- Side Effect (핸들러) :
- Intent 와 Model 사이에서 사이드 이펙트를 처리하는 숨겨진 컴포넌트입니다
- 사용자가 Intent 발송 >> Model 입력 값으로 전달 할 수 있습니다
- Background 작업, API 통신, I/O 작업 등 비즈니스 로직이 포함 될 수 있습니다
- Model (모델) :
- MVI 장점 및 단점 :
- [장점] : 앱의 상태가 하나 뿐이라, 상호작용이 많아져도 상태 충돌이 없습니다
- [장점] : 데이터의 흐름이 정해져 있어 흐름을 이해하고 관리하기가 쉽습니다
- [장점] : 각각 값이 불변하기 때문에, 스레드에 있어 안정성을 가집니다
- [단점] : 다른 MV 형재들에 비해 러닝커브가 높습니다
- [단점] : 작은 변경도 모두 intent를 통해야 하고, 아주 작은 앱도 최소한의 intent와 model를 가져야 합니다
- [단점] : model 을 업데이트 하기 위해 매번 새로운 인스턴스를 만들어야 합니다
[구현 정리]
/**
* // --------------------------------------------------------------------------------------
* TODO [로직 흐름]
* // --------------------------------------------------------------------------------------
* [1] : Activity : 사용자가 버튼 클릭 동작 실시
* [2] : Activity : 버튼 클릭 이벤트 발생 시 >> Intent 이벤트 호출 실시
* [3] : Intent : Intent 에서는 세부 로직 처리 및 Model 데이터 업데이트를 위한 Handler 호출
* [4] : Handler : Handler 에서는 세부 로직 처리 및 Model 데이터 업데이트
* [5] : Handler : Handler Model 업데이트 이후 >> Intent 로 데이터 변경 상태 알림 전달
* [6] : Intent : Handler 로부터 알림을 전달 받으면 >> Activity 렌더링 화면 호출 실시
* [7] : Activity : 렌더링 명령이 내려오면 화면 UI 갱신 실시
* // --------------------------------------------------------------------------------------
* TODO [클래스 구조]
* Activity : 뷰 화면, 모델 상태 업데이트 시 렌더링을 수행해 다시 변경된 데이터 사용자에게 표시
* Intent : 이벤트 동작 정의, 앱 상태 변경 요청 전달
* Handler : 인텐트와 모델 중간 사이 위치해 비즈니스 로직 처리 및 모델 상태 업데이트, 인텐트로 모델 상태 알림 전
* Model : 모델 데이터 상태 값 저장
* // --------------------------------------------------------------------------------------
*/
반응형
'투케이2K 학습정리' 카테고리의 다른 글
Comments