MVVM 의 정의와 장단점

1 분 소요

MVVM


MVVM 이란 View 를 비지니스 로직 또는 백엔드 로직(모델) 로 부터 분리시켜 특정 모델 플랫폼에 종속되지 않도록 하는 패턴이다.VM 이 View의 디스플레이 로직을 제외한 모든것들을 처리한다. 백엔드 로직에 대한 접근과 뷰에 지원하는 유즈케이스 집합으로 구성되도록 Delegate 패턴으로 구현할수 있다.

  • Model : 실제 상태 내용을 표현하는 도메인 모델을 참조하거나 내용을 표현하는 데이터 접근 계층을 참조한다.

  • View : MVC 와 MVP 패턴처럼 View 는 사용자가 화면에서 보는 것들에 대한 구조와 배치 그리고 외관에 대한것이다. 모델을 보여서 표현하고 사용자와 상호작용(클릭, 키보드 이벤트등) 을 수신해 이에 대한 처리를 View 와 ViewModel 의 연결을 정의하고 있는 데이터 바인딩을 통해 ViewModel 로 전달. 쉽게 말해 View 가 실제 유저가 폰을 클릭하거나 스크롤하는등의 액션이 이루어지는 곳이고 그런 이벤트가 발생시 ViewModel 에 알려 이벤트를 전달한다.

  • ViewModel : 공용 속성과 공용 명령을 노출하는 뷰에 대한 추상화. MVC 패턴의 컨트롤러나 MVP 패턴의 프리젠터를 대신해 MVVM 은 바인더를 가진다(연결자). 이는 ViewModel 에 있는 View 에 연결된 속성과 View 사이의 통신을 자동화 한다. ViewModel 은 Model 에 있는 데이터의 상태다. View 쪽에서 유저 액션이 이루어 지면 ViewModel 은 해당부분을 처리해 ViewModel 에 있는 프로퍼티를 업데이트 한다. 그리고 최종적으로 View 는 업데이트 된 프로퍼티를 바인드하다가 알림이 오면 해당 속성으로 뷰를 업데이트 한다.

MVP 의 프리젠트와 주요 차이점은 프리젠터는 View 에 대한 참조를 가지지만 ViewModel 은 View 에 대한 참조를 가지지 않는다. 대신 View 는 뷰모델의 속성에 직접 연결된 채로 업데이트를 받는다 .

장점


MVVM 을 사용하면서 여러 이점이 있다.

  • 프로젝트 결합도를 느슨하게 한다.
  • 유지보수가 쉽다.
  • 새기능 추가 삭제가 간단하다.
  • 테스트 용이하다.
  • 프로젝트에 훌륭한 구조를 가져다주고 탐색하기 편하며 코드를 이해하기 쉬워진다.

단점


응용프로그램이 점점 커지면서 ViewModel 을 폭넓게 사용하기 점점 어려워 진다.

프로젝트가 커지면 커질수록 종속성을 줄이고 분리하는것은 은 매우 중요하다. 즉 각각의 컴포넌트가 서로 다른것들에 대한것을 몰라야한다 .게다가 의존성이 높은 코드는 테스트도 어려울 뿐더러 유지보수 측면에서도 어려워진다.

그래서 우리는 좋은 패턴을 사용해 각각 컴포넌트들이 각자의 역할에 책임을 가지도록해 모듈화 하고 다른모듈의 수정없이수정이 가능한 형태여야 한다.

참조


https://ko.wikipedia.org/wiki/%EB%AA%A8%EB%8D%B8-%EB%B7%B0-%EB%B7%B0%EB%AA%A8%EB%8D%B8

카테고리:

업데이트:

댓글남기기