SlideShare a Scribd company logo
1 of 18
Download to read offline
ANDROID MVI PATTERN
겉 핥기 미뢰 한번 대보기
허 금
안드로이드 아키텍처
1. MVC (Model - View - Controller)
2. MVP (Model - View - Presenter)
3. MVVM (Model - View - ViewModel)
4. MVI (Model - View - Intent)
MVC
Model - View - Controller
CONTROLLER
VIEW MODEL
Model : 데이터를 갖는 계층
View : 유저에게 보여주는 화면을 표시하는 계층
Controller : 유저에게서 입력을 받아, 모델을 통해 View 에 결과를 표시
MVP
Model - View - Presenter
PRESENTER
VIEW MODEL
Model : UI 에 관련된 데이터를 정의하고 데이터구조를 제공하는 인터페이스
View : Model 에서 정의된 데이터를 표시하고 이벤트를 Presenter 로 전달
Presenter : Model 과 View 를 조작한다. Model 로 부터 데이터를 얻어 View 표시를 위한 로직을 담당.
MVVM
Model - View - ViewModel
VIEWMODEL
VIEW MODEL
Model : 다른 패턴에서의 역할과 동일
View : ViewModel 에 의해 보여지는 변수와 액션등에 바인딩된다
ViewModel : ViewModel 은 Model 과 View 의 중개역. Model 을 조작하고, View 가 사용하기 쉬운 형
태로 데이터를 제공하는 역할을 맡는다
*
DataBinding
MVI
Model - View - Intent
INTENT
VIEW MODEL
Model : 상태를 나타냄. 모델은 다른 레이어와 모델간에 단방향 데이터 흐름을 보장하기 위해 불변이어야 한다
View : MVP 등의 아키텍처와 같은 역할이며 액티비티 혹은 프래그먼트로 구현될 수 있다
Intent : 유저 또는 앱 자체에서 작업을 수행하려는 액션.
*
output
output
output
Initial State Add Edit Task State Refreshed || Added State
Model
Model
View
Task Editor Model Store and State Machine
View Event to Intents
From the Model to the View
Tasks List View Events
Intent
RecyclerView - ViewHolders
RecyclerView - Adapter
감사합니다

More Related Content

Similar to Implementing android mvi pattern

hello mvp for android
hello mvp for androidhello mvp for android
hello mvp for androidWonjun Hwang
 
iOS Architecture.pdf
iOS Architecture.pdfiOS Architecture.pdf
iOS Architecture.pdfssuser86e2971
 
Create App Easier With SVC Pattern - DroidKnights 2019 @Seoul
Create App Easier With SVC Pattern - DroidKnights 2019 @SeoulCreate App Easier With SVC Pattern - DroidKnights 2019 @Seoul
Create App Easier With SVC Pattern - DroidKnights 2019 @SeoulBansook Nam
 
Spring mvc
Spring mvcSpring mvc
Spring mvcksain
 
[오픈소스컨설팅]Spring MVC
[오픈소스컨설팅]Spring MVC [오픈소스컨설팅]Spring MVC
[오픈소스컨설팅]Spring MVC Ji-Woong Choi
 
[iOS] MVC, MVP, MVVM
[iOS] MVC, MVP, MVVM[iOS] MVC, MVP, MVVM
[iOS] MVC, MVP, MVVMBill Kim
 
Knockout js소개
Knockout js소개Knockout js소개
Knockout js소개Kwangho SEO
 
주니어 입장에서 바라보는 디자인패턴 & 아키텍쳐.pdf
주니어 입장에서 바라보는 디자인패턴 & 아키텍쳐.pdf주니어 입장에서 바라보는 디자인패턴 & 아키텍쳐.pdf
주니어 입장에서 바라보는 디자인패턴 & 아키텍쳐.pdf병근 손
 
[스프링 스터디 3일차] @MVC
[스프링 스터디 3일차] @MVC[스프링 스터디 3일차] @MVC
[스프링 스터디 3일차] @MVCAnselmKim
 
Angular js 의존관계 주입과 서비스
Angular js 의존관계 주입과 서비스Angular js 의존관계 주입과 서비스
Angular js 의존관계 주입과 서비스Tae Ho Kang
 
2015 SINVAS USER CONFERENCE - MDD/MDA 개발방법론을 통한 정보시스템 개발방안
2015 SINVAS USER CONFERENCE - MDD/MDA 개발방법론을 통한 정보시스템 개발방안2015 SINVAS USER CONFERENCE - MDD/MDA 개발방법론을 통한 정보시스템 개발방안
2015 SINVAS USER CONFERENCE - MDD/MDA 개발방법론을 통한 정보시스템 개발방안Suji Lee
 
[LetSwift 2023] 객체지향-함수형 아키텍처 직접 만들기
[LetSwift 2023] 객체지향-함수형 아키텍처 직접 만들기[LetSwift 2023] 객체지향-함수형 아키텍처 직접 만들기
[LetSwift 2023] 객체지향-함수형 아키텍처 직접 만들기Moonbeom KWON
 
HeadFisrt Servlet&JSP Chapter 3
HeadFisrt Servlet&JSP Chapter 3HeadFisrt Servlet&JSP Chapter 3
HeadFisrt Servlet&JSP Chapter 3J B
 
Android 삽질일지
Android 삽질일지Android 삽질일지
Android 삽질일지Hyunho-Cho
 
HOONS닷넷 오픈소스 프로젝트 Part1.
HOONS닷넷 오픈소스 프로젝트 Part1.HOONS닷넷 오픈소스 프로젝트 Part1.
HOONS닷넷 오픈소스 프로젝트 Part1.Hojin Jun
 
Rx for iOS App. RxMVVM-DataCenter!
Rx for iOS App. RxMVVM-DataCenter!Rx for iOS App. RxMVVM-DataCenter!
Rx for iOS App. RxMVVM-DataCenter!SUNGCHEOL KIM
 

Similar to Implementing android mvi pattern (20)

hello mvp for android
hello mvp for androidhello mvp for android
hello mvp for android
 
iOS Architecture.pdf
iOS Architecture.pdfiOS Architecture.pdf
iOS Architecture.pdf
 
자마린 iOS 멀티화면 컨트롤러_네비게이션 컨트롤러, 루트 뷰 컨트롤러
자마린 iOS 멀티화면 컨트롤러_네비게이션 컨트롤러, 루트 뷰 컨트롤러자마린 iOS 멀티화면 컨트롤러_네비게이션 컨트롤러, 루트 뷰 컨트롤러
자마린 iOS 멀티화면 컨트롤러_네비게이션 컨트롤러, 루트 뷰 컨트롤러
 
Create App Easier With SVC Pattern - DroidKnights 2019 @Seoul
Create App Easier With SVC Pattern - DroidKnights 2019 @SeoulCreate App Easier With SVC Pattern - DroidKnights 2019 @Seoul
Create App Easier With SVC Pattern - DroidKnights 2019 @Seoul
 
Spring mvc
Spring mvcSpring mvc
Spring mvc
 
[오픈소스컨설팅]Spring MVC
[오픈소스컨설팅]Spring MVC [오픈소스컨설팅]Spring MVC
[오픈소스컨설팅]Spring MVC
 
[iOS] MVC, MVP, MVVM
[iOS] MVC, MVP, MVVM[iOS] MVC, MVP, MVVM
[iOS] MVC, MVP, MVVM
 
Knockout js소개
Knockout js소개Knockout js소개
Knockout js소개
 
주니어 입장에서 바라보는 디자인패턴 & 아키텍쳐.pdf
주니어 입장에서 바라보는 디자인패턴 & 아키텍쳐.pdf주니어 입장에서 바라보는 디자인패턴 & 아키텍쳐.pdf
주니어 입장에서 바라보는 디자인패턴 & 아키텍쳐.pdf
 
[스프링 스터디 3일차] @MVC
[스프링 스터디 3일차] @MVC[스프링 스터디 3일차] @MVC
[스프링 스터디 3일차] @MVC
 
Angular js 의존관계 주입과 서비스
Angular js 의존관계 주입과 서비스Angular js 의존관계 주입과 서비스
Angular js 의존관계 주입과 서비스
 
1.스프링프레임워크 개요
1.스프링프레임워크 개요1.스프링프레임워크 개요
1.스프링프레임워크 개요
 
2015 SINVAS USER CONFERENCE - MDD/MDA 개발방법론을 통한 정보시스템 개발방안
2015 SINVAS USER CONFERENCE - MDD/MDA 개발방법론을 통한 정보시스템 개발방안2015 SINVAS USER CONFERENCE - MDD/MDA 개발방법론을 통한 정보시스템 개발방안
2015 SINVAS USER CONFERENCE - MDD/MDA 개발방법론을 통한 정보시스템 개발방안
 
[LetSwift 2023] 객체지향-함수형 아키텍처 직접 만들기
[LetSwift 2023] 객체지향-함수형 아키텍처 직접 만들기[LetSwift 2023] 객체지향-함수형 아키텍처 직접 만들기
[LetSwift 2023] 객체지향-함수형 아키텍처 직접 만들기
 
HeadFisrt Servlet&JSP Chapter 3
HeadFisrt Servlet&JSP Chapter 3HeadFisrt Servlet&JSP Chapter 3
HeadFisrt Servlet&JSP Chapter 3
 
Android 삽질일지
Android 삽질일지Android 삽질일지
Android 삽질일지
 
Django View Part 1
Django View Part 1Django View Part 1
Django View Part 1
 
(닷넷,자마린,아이폰실습)Xamarin.iOS HelloWorld 실습_멀티화면,화면전환_Xamarin교육/Xamarin강좌
(닷넷,자마린,아이폰실습)Xamarin.iOS HelloWorld 실습_멀티화면,화면전환_Xamarin교육/Xamarin강좌(닷넷,자마린,아이폰실습)Xamarin.iOS HelloWorld 실습_멀티화면,화면전환_Xamarin교육/Xamarin강좌
(닷넷,자마린,아이폰실습)Xamarin.iOS HelloWorld 실습_멀티화면,화면전환_Xamarin교육/Xamarin강좌
 
HOONS닷넷 오픈소스 프로젝트 Part1.
HOONS닷넷 오픈소스 프로젝트 Part1.HOONS닷넷 오픈소스 프로젝트 Part1.
HOONS닷넷 오픈소스 프로젝트 Part1.
 
Rx for iOS App. RxMVVM-DataCenter!
Rx for iOS App. RxMVVM-DataCenter!Rx for iOS App. RxMVVM-DataCenter!
Rx for iOS App. RxMVVM-DataCenter!
 

Implementing android mvi pattern

  • 1. ANDROID MVI PATTERN 겉 핥기 미뢰 한번 대보기 허 금
  • 2. 안드로이드 아키텍처 1. MVC (Model - View - Controller) 2. MVP (Model - View - Presenter) 3. MVVM (Model - View - ViewModel) 4. MVI (Model - View - Intent)
  • 3. MVC Model - View - Controller CONTROLLER VIEW MODEL Model : 데이터를 갖는 계층 View : 유저에게 보여주는 화면을 표시하는 계층 Controller : 유저에게서 입력을 받아, 모델을 통해 View 에 결과를 표시
  • 4. MVP Model - View - Presenter PRESENTER VIEW MODEL Model : UI 에 관련된 데이터를 정의하고 데이터구조를 제공하는 인터페이스 View : Model 에서 정의된 데이터를 표시하고 이벤트를 Presenter 로 전달 Presenter : Model 과 View 를 조작한다. Model 로 부터 데이터를 얻어 View 표시를 위한 로직을 담당.
  • 5. MVVM Model - View - ViewModel VIEWMODEL VIEW MODEL Model : 다른 패턴에서의 역할과 동일 View : ViewModel 에 의해 보여지는 변수와 액션등에 바인딩된다 ViewModel : ViewModel 은 Model 과 View 의 중개역. Model 을 조작하고, View 가 사용하기 쉬운 형 태로 데이터를 제공하는 역할을 맡는다 * DataBinding
  • 6. MVI Model - View - Intent INTENT VIEW MODEL Model : 상태를 나타냄. 모델은 다른 레이어와 모델간에 단방향 데이터 흐름을 보장하기 위해 불변이어야 한다 View : MVP 등의 아키텍처와 같은 역할이며 액티비티 혹은 프래그먼트로 구현될 수 있다 Intent : 유저 또는 앱 자체에서 작업을 수행하려는 액션. * output output output
  • 7. Initial State Add Edit Task State Refreshed || Added State
  • 8.
  • 10. Model
  • 11. View
  • 12. Task Editor Model Store and State Machine
  • 13. View Event to Intents
  • 14. From the Model to the View
  • 15. Tasks List View Events Intent