MVC vs MVVM ?

zrcola·2022년 8월 29일

개발상식 VS 모음

목록 보기
2/2
post-thumbnail

└ 이거 vs편 추가각인데?싶어 알아본 내용 빠르게 정리합니다🧐

MVC, MVVM 뭐가 다른데?

이 둘의 큰 차이는 진입점에 있는데
바로, 클라이언트(유저)의 요청을 MVC는 Controller가, MVVM은 View 가 전달받는다는 점!

MVC 패턴

Model + View + Controller 로 나누어 설계된 아키텍처 패턴

  • Model : 애플리케이션에서 사용되는 데이터와 그 데이터를 처리하는 부분
  • View : 모델을 기반으로 사용자가 보는 화면
  • Controller : 사용자의 action을 받고 처리하는 부분

[이해한대로 써 본 동작순서]

  1. 사용자의 요청이 Controller로 전달된다
    이거 바꿔줘!

  2. Controller는 요청에 따라 Model을 업데이트 하고 결과에 따라 View를 선택한다
    데이터 갱신 좀 해줘!

  3. View가 업데이트 된다
    화면아 업데이트하자!

❗️ 각 기능별로 코드를 분리하여, 한 파일의 코드가 모이는 것을 방지하여 재사용성과 확장성이 용이하다
❗️ 어플리케이션이 커질수록 하나의 Controller에 여러개의 Model, View가 복잡해져 유지보수가 어려울수 있다 (Controller와 View는 1:n 관계)
✅ 이 문제를 해결하기 위해 MVP, MVVM 패턴이 도입되었다고 함!

MVVM 패턴

Model + View + View Model (=MVC패턴에서 C가 ViewModel로 바뀐 패턴)

  • Model : 애플리케이션에서 사용되는 데이터와 그 데이터를 처리하는 부분
  • View : 모델을 기반으로 사용자가 보는 화면
  • View Model : View와 Model사이를 연결하는 중재자 역할, View에게 전달받은 요청을 처리

[이해한대로 써 본 동작순서]

  1. 사용자의 요청이 View를 통해 전달된다
    이거 바꿔줘!

  2. View는 Command패턴으로 ViewModel에 action을 전달한다
    이거 바꿔달래! 내가 바뀌는 거 보고 있을게

  3. ViewModel은 Model에게 데이터 작업을 요청한다
    데이터 바꿔줘!

  4. Model은 ViewModel의 요청에 응답한다(ViewModel-Model 데이터바인딩)
    ㅇㅋ 바꿈

  5. View Model은 응답 받은 데이터(Model의 데이터)를 사용해서 자신의 데이터를 변경한다

  6. View는 View Model과 Data Binding으로 인해 자동으로 UI(화면)을 갱신한다

❗️ View와 Model사이의 의존성이 없다
❗️ 커맨드패턴과 데이터바인딩을 사용하여 뷰-뷰모델 간의 의존성을 없앰(View Model과 View는 1:n 관계)
❗️ View Model의 설계가 쉽지 않다


Data Binding
두 데이터를 일치시키는 기법으로, 데이터가 변경되었을 때 View에 메서드로 수정된 데이터를 반영하는 것이 아니라 데이터만 변경해도 자동으로 View에 반영이 될 수 있도록 해 주는 것을 의미

profile
ᕦ( ᐛ )ᕡ

0개의 댓글