MVC vs MVVM 정리
1. 내가 헷갈렸던 부분
- 처음에 MVC의 Controller가 단순히 Model과 데이터를 주고받는 역할이라면,
결국 View를 몰라도 되는 것 아닌가? → 그러면 MVVM과 뭐가 다른지 혼란스러웠음.
2. MVC 아키텍처
-
구성 요소
- Model: 데이터, 비즈니스 로직
- View: 화면(UI)
- Controller: 이벤트를 받아 Model을 호출하고, View에 데이터를 전달
-
Controller와 View 관계
- Controller는 직접 View를 조작하지 않더라도,
여전히 View를 선택/지정하고 데이터 전달 책임을 가짐
- 즉, Controller는 View의 존재를 어느 정도 인지해야 함
3. MVVM 아키텍처
-
구성 요소
- Model: 데이터, 비즈니스 로직
- View: 화면(UI)
- ViewModel: View에 필요한 상태와 동작을 노출
-
ViewModel과 View 관계
- ViewModel은 View를 전혀 모름
- View는 ViewModel의 속성을 데이터 바인딩을 통해 구독
- 상태가 변하면 View가 자동 갱신됨
- 사용자 액션은 Command/Action 형태로 ViewModel에 전달됨
4. 핵심 차이
-
MVC
- Controller ↔ View 간 간접적이지만 강한 결합
- Controller는 어떤 View를 사용할지, 어떤 데이터를 넘길지 결정
-
MVVM
- ViewModel ↔ View 간 데이터 바인딩 기반의 느슨한 결합
- ViewModel은 View 존재를 모름
- View는 단순히 ViewModel의 상태를 반영할 뿐
5. 정리
- MVC: Controller가 데이터를 받아 어떤 View로 보여줄지 결정
- MVVM: ViewModel이 상태를 노출하면, View가 자동으로 따라옴
➡️ 내가 헷갈렸던 부분은 MVC의 Controller도 View를 모를 수 있지 않나?였음.
하지만 중요한 차이는 Controller는 여전히 View를 지정해야 한다는 점,
반면 ViewModel은 View의 존재 자체를 몰라도 된다는 점이었음 오늘 하나 더 알아가서 기쁘다아.