MVVM이란?

Groot·2022년 8월 24일
0

TIL

목록 보기
55/153
post-thumbnail

TIL

🌱 난 오늘 무엇을 공부했을까?

📌 MVVM이란?

  • Model + View + View Model을 합친 용어
  • 이벤트를 단방향 처리
  • MVC -> Apple's MVC -> MVP -> MVVM 순으로 발전
  • View Model이 Model에 있는 데이터 객체를 노출(변환)하는 책임을 지기 때문에 객체를 관리하고 표현하기가 쉬워진다는 것을 의미
  • Binding(RxSwift, Combine 사용하면 좋다.)

📍 구성요소

  • Model
    • 데이터를 캡슐화하는 역할
    • 데이터가 어떻게 가지고 있을지만 관여, 데이터가 어떻게 보여질 것인지는 관여하지 않음.
    • MVC의 Model과 크게 다르지 않다.
  • View
    • 사용자에게 화면으로 Model의 데이터를 표현.
    • Model과 직접적으로 관련이 없음.
    • ViewModel로부터 데이터를 가져와서 표현한다.
    • 사용자의 이벤트를 ViewModel에게 넘긴다.
    • View의 설정을 직접한다.
  • ViewModel
    • View에게 전달받은 요청을 처리한다.
    • Model의 변화를 View에 전달한다.
    • View와 Model 사이의 중개자 역할(MVC에서 Controller의 역할)
    • Model 에 변화가 생기 ViewModel 에게 자동으로 전달되고, ViewModel과 사전에 binding된 View가 변경.
    • 반대로 View에 이벤트가 발생하면 ViewModel -> Model

📍 MVC와 MVVM 차이점

MVCMVVM
컨트롤러가 앱의 진입점이다.뷰가 앱의 진입점이다.
Controller와 View 간의 일대다 관계.View & View Model 간의 일대다 관계.
View에 Controller에 대한 참조가 없다.View에는 보View Model에 대한 참조가 있다.
읽고, 변경하고, 단위 테스트하고, 재사용하기가 어렵다.복잡한 데이터 바인딩이 있는 경우 디버깅 프로세스가 복잡하다.
MVC Model 구성요소는 사용자와 별도로 테스트 가능.별도의 단위 테스트가 용이하고 코드는 이벤트 기반입니다.

📍 MVVM의 장점

  • 비즈니스 로직을 Ul에서 분리.
  • 유지보수 및 테스트 용이.
  • 구성 요소를 재사용하기 쉽다.
  • Loosely coupled architecture: MVVM은 애플리케이션 아키텍처를 느슨하게 결합된 것으로 만든다.
  • View를 참조할 필요 없이 viewmodel과 Model 레이어 모두에 대한 단위 테스트 케이스를 작성할 수 있다.

📍 MVVM의 단점

  • View Model 설계가 어려움
  • 어떤 사람들은 MVVM 아키텍처의 단순한 UI가 과도할 수 있다고 생각
  • View와 View Model 간의 긴밀한 결합을 제공하지 않음

📍 참고

https://www.guru99.com/mvc-vs-mvvm.html#7
https://eeyatho.tistory.com/77
https://velog.io/@ictechgy/MVVM-%EB%94%94%EC%9E%90%EC%9D%B8-%ED%8C%A8%ED%84%B4
https://www.youtube.com/watch?v=hkRvC0_LnZk

profile
I Am Groot

0개의 댓글