MVVM

MVVM

MVVM - (Model-View-ViewModel)은 UI와 비즈니스 로직을 분리하여 코드의 관리와 유지보수를 용이하게 만든다.

MVVM 패턴은 3가지 구성요소로 나뉜다.

Model

데이터와 비즈니스 로직을 포함

  • 데이터와 비즈니스 로직을 담당하는 부분
  • 데이터를 가져오고 저장하는 역할을 수행
  • 데이터베이스, 네트워크 요청, 웹 서비스 호출 등 백엔드와의 통신

View

사용자에게 보여지는 UI 부분

  • 사용자 인터페이스를 담당하는 부분
  • 레이아웃과 화면을 보여주고 표시하며, 사용자 입력을 처리
  • ViewModel을 통하여 인터페이스의 상태를 업데이트

ViewModel

View와 Model사이의 연결고리 역할

  • View가 필요한 데이터를 Model에서 가져와 가공
  • View에서 발생한 이벤트를 감지하고, 해당 이벤트에 맞는 비즈니스 로직 수행
  • 사용자 액션에 대한 로직 처리
  • 데이터 바인딩을 통하여 UI의 자동 업데이트 지원
  • Model과 상호작용하여 데이터를 가져오거나 업데이트하고 View에 데이터를 업데이트
  • Model에 대한 참조는 가지고 있지만, View에 대해서는 직접적인 참조를 가지지 않아 View와의 의존성은 낮음

MVVM 장단점

장점

  • UI 코드와 비즈니스 로직이 분리되어 있어, 변경 사항이 다른 부분에 영향을 미치지 않아 유지보수가 용이하다.
  • 비즈니스 로직이 뷰로 부터 분리 되어 있어 UI 없이도 테스트가 가능하다.
  • View-ViewModel이 1:N 관계이기 때문에 중복 로직을 모듈화 하여 코드의 재사용성을 높일 수 있다.
  • ViewModel과 뷰 사이의 데이터 바인딩을 통해, UI 요소와 데이터의 자동 동기화를 지원한다. 이는 코드의 양을 줄이고, 더 깔끔한 코드 구조를 가능하게 한다.

단점

  • 설계하기가 복잡하며 간단한 UI를 만들때 과도하게 커질 수 있다.
  • Data Binding으로 메모리 소모가 크다
  • ViewModel 설계가 복잡하다.