Android MVVM 패턴

고성욱·2023년 3월 17일
0

안드로이드

목록 보기
2/26

Android MVVM 패턴

MVVM패턴의 의미

MVVM 패턴은 MVC 패턴에서 Controller를 제외하고 ViewModel을 추가한 패턴.

사용자가 보여지는 View를 생각하면 된다. 유저 인터렉션을 받는 역활, 인터렉션을 받을 시

ViewModel에게 명령을 내리는 패턴

MVVM 패턴의 장단점

  • 장점
    • View와 Model이 서로 전혀 알지 못하기에 독립성을 유지할 수 있습니다
    • 독립성을 유지하기 때문에 효율적인 유닛테스트가 가능합니다
    • View와 ViewModel을 바인딩하기 때문에 코드의 양이 줄어듭니다
    • View와 ViewModel의 관계는 N:1 관계입니다
    • 유닛테스트를 하기가 좋습니다. 그 이유는 ViewModel에는 UIKit 관련 코드가 없고 Controller와의 의존성도 없기 때문입니다
  • 단점
    • 간단한 UI에서 오히려 ViewModel을 설계하는 어려움이 있을 수 있습니다

    • 데이터 바인딩이 필수적으로 요구됩니다

    • 복잡해질수록 Controller처럼 ViewModel이 빠르게 비대해집니다

    • 표준화된 틀이 존재하지 않아 사람마다 이해가 다릅니다

      MVC vs MVVM

      기존 성행했던 단순한 형태의 MVC 패턴에 따라 Activity 에 모든 코드를 다 집어넣으면 이런 단점들이 발생했다.

    • 앱 동작이 많아질 수록 Activity 자체가 무거워 짐

    • View 와 Model 간의 의존성이 높아져 코드가 복잡해 짐

    • View 의 UI Refresh 를 위해 Model 을 참조하므로 앱 규모가 커질수록 코드가 복잡해 짐

      단점들을 봤을 때, MVC 패턴은 규모가 커질수록 공통적으로 유지보수가 어려워진다는 단점이 존재한다.왜냐하면 MVC 패턴의 동작이 아래와 같기 때문이다.

      https://velog.io/@haero_kim/Android-깔쌈하게-MVVM-패턴과-AAC-알아보기

      View

      1. Activity / Fragment 가 View 역할을 함
      2. 사용자의 Action 을 받음 (텍스트 입력, 버튼 터치 등)
      3. ViewModel 의 데이터를 관찰하여 UI 갱신

      ViewModel

      1. View 가 요청한 데이터를 Model 로 요청
      2. Model 로부터 요청한 데이터를 받음

      Model

      1. ViewModel 이 요청한 데이터를 반환
      2. Room, Realm 과 같은 DB 사용이나 Retrofit 을 통한 백엔드 API 호출 (네트워킹) 이 보편적

MVVM 패턴은 다음과 같은 장점을 가진다.

  • View 가 ViewModel 의 Data 를 관찰하고 있으므로 UI 업데이트가 간편
  • ViewModel 이 데이터를 홀드하고 있으므로 Memory Leak 발생 가능성 배제(View 가 직접 Model 에 접근하지 않아 Activity / Fragment 라이프 사이클에 의존하지 않기 때문)
  • 기능별 모듈화가 잘 되어 유지 보수에 용이 (e.g. ViewModel 재사용 및 DB 교체 등의 작업이 편리함)

이러한 장점을 가지고 있는 MVVM 패턴은 잘만 사용한다면 훌륭한 앱을 만들 수 있다.그렇지만 그만큼 구조가 복잡하다는 단점이 크게 다가온다. 진입장벽이 상당하다.

출처! : [https://velog.io/@haero_kim/Android-깔쌈하게-MVVM-패턴과-AAC-알아보기](https://velog.io/@haero_kim/Android-%EA%B9%94%EC%8C%88%ED%95%98%EA%B2%8C-MVVM-%ED%8C%A8%ED%84%B4%EA%B3%BC-AAC-%EC%95%8C%EC%95%84%EB%B3%B4%EA%B8%B0)
profile
안드로이드, 파이썬 개발자

0개의 댓글