D MVC MVP MVVM D
선정 이유?
Flux Pattern
Flux Pattern?
2014년 페이스북(현 meta) F8 컨퍼런스에서 발표된 아키텍처.
어플리케이션에서 데이터를 취급하기 위해 사용하는 디자인 패턴.
Flux Pattern
Flux Pattern?
FB 의 자산들을 사용하기 위해 꼭 이해할 개념
MVC? MVP? MVVM?
소프트웨어 디자인 패턴으로,
사용자 인터페이스 View, 컨트롤러 Controller, 비즈니스 로직 Model 을 구분해
유지보수와 개발 효율을 증진시킨다는 방법론
MVC? MVP? MVVM?
1
+
-
click !
예시) + 버튼을 누르면 숫자값이 1씩 증가하는 로직
MVC?
Model-View-Controller
Input
Controller
Model
View
Action
Update
MVC?
Controller
Model
View
INPUT
+
순서
사용자 Action 입력됨
Model-View-Controller
1
MVC?
INPUT
Controller
Model
View
+
순서
사용자 Action 입력됨
Controller 에 Action 전달
Model-View-Controller
1
MVC?
INPUT
Controller
Model
View
+
순서
사용자 Action 입력됨
Controller 에 Action 전달
Model 에 Action 전달
& 새로운 데이터 요청
Model-View-Controller
1
MVC?
INPUT
Controller
Model
View
순서
사용자 Action 입력됨
Controller 에 Action 전달
Model 에 Action 전달
& 새로운 데이터 요청
Model 에서 로직 처리, 업데이트
Model-View-Controller
2
MVC?
INPUT
Controller
Model
View
순서
사용자 Action 입력됨
Controller 에 Action 전달
Model 에 Action 전달
& 새로운 데이터 요청
Model 에서 로직 처리, 업데이트
View 에 새로운 데이터 전달
2
Model-View-Controller
2
MVC?
Model-View-Controller
INPUT
Controller
Model
View
순서
사용자 Action 입력됨
Controller 에 Action 전달
Model 에 Action 전달
& 새로운 데이터 요청
Model 에서 로직 처리, 업데이트
View 에 새로운 데이터 전달
사용자 화면 업데이트
2
2
2
Input
Presenter
Model
View
Action
MVP?
Model-View-Presenter
Action
Update
State Change
MVP?
Presenter
Model
View
INPUT
+
순서
사용자 Action 입력됨
Model-View-Presenter
1
MVP?
Presenter
Model
View
INPUT
순서
사용자 Action 입력됨
View 에 Action 전달
+
Model-View-Presenter
1
MVP?
Presenter
Model
View
INPUT
순서
사용자 Action 입력됨
View 에 Action 전달
Presenter 에 Action 전달
& 새로운 데이터 요청
+
Model-View-Presenter
1
MVP?
Presenter
Model
View
INPUT
순서
사용자 Action 입력됨
View 에 Action 전달
Presenter 에 Action 전달
& 새로운 데이터 요청
Model 에 Action 전달
& 새로운 데이터 요청
+
Model-View-Presenter
1
MVP?
Presenter
Model
View
INPUT
순서
사용자 Action 입력됨
View 에 Action 전달
Presenter 에 Action 전달
& 새로운 데이터 요청
Model 에 Action 전달
& 새로운 데이터 요청
Model 에서 로직 처리, 업데이트
Model-View-Presenter
2
MVP?
Presenter
Model
View
INPUT
순서
사용자 Action 입력됨
View 에 Action 전달
Presenter 에 Action 전달
& 새로운 데이터 요청
Model 에 Action 전달
& 새로운 데이터 요청
Model 에서 로직 처리, 업데이트
Presenter 에 새로운 데이터 전달
2
Model-View-Presenter
2
MVP?
Presenter
Model
View
INPUT
순서
사용자 Action 입력됨
View 에 Action 전달
Presenter 에 Action 전달
& 새로운 데이터 요청
Model 에 Action 전달
& 새로운 데이터 요청
Model 에서 로직 처리, 업데이트
Presenter 에 새로운 데이터 전달
View 에 새로운 데이터 전달
2
Model-View-Presenter
2
MVP?
Model-View-Presenter
Presenter
Model
View
INPUT
순서
사용자 Action 입력됨
View 에 Action 전달
Presenter 에 Action 전달
& 새로운 데이터 요청
Model 에 Action 전달
& 새로운 데이터 요청
Model 에서 로직 처리, 업데이트
Presenter 에 새로운 데이터 전달
View 에 새로운 데이터 전달
사용자 화면 업데이트
2
2
2
Input
View Model
Model
View
Action
Command
Data Binding
State Change
MVVM?
Model-View-ViewModel
MVVM?
Model-View-ViewModel
View Model
Model
View
INPUT
+
순서
사용자 Action 입력됨
1
MVVM?
Model-View-ViewModel
View Model
Model
View
INPUT
+
순서
사용자 Action 입력됨
View 에 Action 전달
1
MVVM?
Model-View-ViewModel
View Model
Model
View
INPUT
+
순서
사용자 Action 입력됨
View 에 Action 전달
ViewModel 에 Action 전달
1
Command
MVVM?
Model-View-ViewModel
View Model
Model
View
INPUT
순서
사용자 Action 입력됨
View 에 Action 전달
ViewModel 에 Action 전달
Model 에 Action 전달
+
1
MVVM?
Model-View-ViewModel
View Model
Model
View
INPUT
순서
사용자 Action 입력됨
View 에 Action 전달
ViewModel 에 Action 전달
Model 에 Action 전달
데이터 가공
2
MVVM?
Model-View-ViewModel
View Model
Model
View
INPUT
순서
사용자 Action 입력됨
View 에 Action 전달
ViewModel 에 Action 전달
Model 에 Action 전달
데이터 가공
ViewModel 에 데이터 응답
2
2
MVVM?
Model-View-ViewModel
View Model
Model
View
INPUT
순서
사용자 Action 입력됨
View 에 Action 전달
ViewModel 에 Action 전달
Model 에 Action 전달
데이터 가공
ViewModel 에 데이터 응답
Data Binding - 데이터 전달
2
2
2
Data Binding
MVVM?
Model-View-ViewModel
View Model
Model
View
INPUT
순서
사용자 Action 입력됨
View 에 Action 전달
ViewModel 에 Action 전달
Model 에 Action 전달
데이터 가공
ViewModel 에 데이터 응답
Data Binding - 데이터
사용자 화면 업데이트
2
2
2
2
MVC?
가장 단순한 패턴으로 보편적으로 널리 사용되고 있음.
But, View 와 Model 사이의 의존성이 높아 커질수록 유지보수가 어려워짐.
MVP?
MVVM?
Model-View-ViewModel
Model-View-Presenter
Model-View-Controller
View 와 Model 의 연결점이 없어 의존성 문제가 사라짐.
But, View 와 Presenter 사이의 의존성이 높음...
View 와 Model & View 와 ViewModel 의 의존성이 없음. 독립적이기에 모듈화 가능.
But, 어려움
참고
나무위키 MVC
What’s a Software Design Pattern?_Lalit Singla_https://www.netsolutions.com/insights/software-design-pattern/
[디자인패턴] MVC, MVP, MVVM_버미노트_https://beomy.tistory.com/43
MVC, MVP 그리고 MVVM 패턴에 대하여_devowen_https://devowen.com/457