MV(P)VM
MVVM에 P를 유동적으로 사용해보자
발표자 소개
Flutter Developer
GDG Songdo Organizer
Flutter Incheon Organizer
2022년 부터 Flutter 개발자로 개발을 하며 현재 Nsus Lab Korea 라는 곳에서 세계 1위 오프라인 포커 대회 (WSOP: World Series Of Poker)에서 사용되는 Flutter App을 개발 중
현재 Bahamas에 앱을 선보이며 올해 Vegas를 향해 달려 가는 중
Agenda
What’s MV~
1
MVVM/MVP
MV(P)VM
Props & Cons
Conclusion
5
3
2
4
Q&A
6
Whats MV~
아키텍처는 아주 오래 전 부터 논의 되어 왔던 이야기
1970년대 SmallTalk의 �MVC (Model - View - Controller) 를 시작으로
MVP (Model - View - Presenter)
MVVM (Model - View -ViewModel)
MVI (Model - View - Intent)
등등 끊임 없이 이야기되고 이를 여러 프로젝트에 알맞게 사용을 하고 있다.
MVVM
MVP
MVP의 경우 View와 비즈니스 로직을 Presenter가 담당하는 아키텍처
그렇다면 둘의 장점을 같이 써보는건 어떨까?
MV(P)VM
View
Model
Flow (ViewModel)
UiAction
DataBinding
기존의 MVVM 구조에서 UiAction 이라는 View를 컨트롤 하는 것을 선택적으로 받아서 필요에 따라 활용 하는 것이 목적
MV(P)VM
View
Model
Flow (ViewModel)
UiAction
DataBinding
UiAction이 View에 있거나 없다면?�-> MVVM�UiAction이 ViewModel에 있다면?�-> MVP�
UiAction
사용된 라이브러리
파일 구조
≈
파일 구조
≈
구동 영상
View - ViewModel
View - ViewModel
MVVM
View(UiAction) - ViewModel
View
Model
Flow (ViewModel)
UiAction
DataBinding
View(UiAction) - ViewModel
View
View
View
ViewModel
View - ViewModel
View - ViewModel
MV(P)VM
View(UiAction) - ViewModel
View - ViewModel(UiAction)
View
Model
Flow (ViewModel)
UiAction
DataBinding
UiAction
View - ViewModel
View
View
View -
ViewModel
?
View -
ViewModel
View -
ViewModel
ViewModel
ViewModel
ViewModel
ViewModel
만약 UiAction이 없다면?
만약 UiAction이 없다면?
그냥.. BuildContext를 넘기면 안되나요?
no no no no no no no no
BuildContext는 반드시 View에서만…
음…. 굳이 이렇게 써야 하나요?
Props
Cons
그럼에도 쓰는 이유
“If you want everything to be familiar, you will never learn anything new, because it can't be significantly different from what you already know.”
Q&A
“
”