
└ 이거 vs편 추가각인데?싶어 알아본 내용 빠르게 정리합니다🧐
이 둘의 큰 차이는 진입점에 있는데
바로, 클라이언트(유저)의 요청을 MVC는 Controller가, MVVM은 View 가 전달받는다는 점!

Model + View + Controller 로 나누어 설계된 아키텍처 패턴
- Model : 애플리케이션에서 사용되는 데이터와 그 데이터를 처리하는 부분
- View : 모델을 기반으로 사용자가 보는 화면
- Controller : 사용자의 action을 받고 처리하는 부분
[이해한대로 써 본 동작순서]
사용자의 요청이 Controller로 전달된다
이거 바꿔줘!
Controller는 요청에 따라 Model을 업데이트 하고 결과에 따라 View를 선택한다
데이터 갱신 좀 해줘!
View가 업데이트 된다
화면아 업데이트하자!
❗️ 각 기능별로 코드를 분리하여, 한 파일의 코드가 모이는 것을 방지하여 재사용성과 확장성이 용이하다
❗️ 어플리케이션이 커질수록 하나의 Controller에 여러개의 Model, View가 복잡해져 유지보수가 어려울수 있다 (Controller와 View는 1:n 관계)
✅ 이 문제를 해결하기 위해 MVP, MVVM 패턴이 도입되었다고 함!
Model + View + View Model (=MVC패턴에서 C가 ViewModel로 바뀐 패턴)
- Model : 애플리케이션에서 사용되는 데이터와 그 데이터를 처리하는 부분
- View : 모델을 기반으로 사용자가 보는 화면
- View Model : View와 Model사이를 연결하는 중재자 역할, View에게 전달받은 요청을 처리
[이해한대로 써 본 동작순서]
사용자의 요청이 View를 통해 전달된다
이거 바꿔줘!
View는 Command패턴으로 ViewModel에 action을 전달한다
이거 바꿔달래! 내가 바뀌는 거 보고 있을게
ViewModel은 Model에게 데이터 작업을 요청한다
데이터 바꿔줘!
Model은 ViewModel의 요청에 응답한다(ViewModel-Model 데이터바인딩)
ㅇㅋ 바꿈
View Model은 응답 받은 데이터(Model의 데이터)를 사용해서 자신의 데이터를 변경한다
View는 View Model과 Data Binding으로 인해 자동으로 UI(화면)을 갱신한다
❗️ View와 Model사이의 의존성이 없다
❗️ 커맨드패턴과 데이터바인딩을 사용하여 뷰-뷰모델 간의 의존성을 없앰(View Model과 View는 1:n 관계)
❗️ View Model의 설계가 쉽지 않다
Data Binding
두 데이터를 일치시키는 기법으로, 데이터가 변경되었을 때 View에 메서드로 수정된 데이터를 반영하는 것이 아니라 데이터만 변경해도 자동으로 View에 반영이 될 수 있도록 해 주는 것을 의미