[안드로이드] 안드로이드 MVVM 패턴

2021. 5. 14. 15:37·Android
728x90

1. MVVM - Model, View, ViewModel

What is MVVM?

Model - View - ViewModel의 3가지로 이루어져 있는 구조.

소프트웨어 아키텍처 패턴의 하나.

 

* 아키텍처 패턴 (architecture pattern)

주어진 문맥 안에서 소프트웨어 아키텍처의 공통적인 발생 문제에 대한 일반적인, 재사용 가능한 해결책을 의미. 디자인 패턴과 비슷하지만 더 넓은 범위에 속함.

 

Model

데이터와 데이터에 관련된 모든 행위

- DataModel 이라고도 불림

- ViewModel에서 데이터를 가져갈 수 있도록 데이터를 준비하고 이벤트를 보내는 역할

 

View

사용자에게 화면으로 보이는 모든 구조, 레이아웃

- View는 Model을 시각적으로 표현하고, 사용자의 상호작용을 받는다.

- data binding을 통해 입력들을 ViewModel에게 전달한다.

 

ViewModel

View의 추상화된 형태. View에 보여야 하는 데이터와 명령을 가지고 있음

- View가 ViewModel을 observe 하는 형태로 binding 되어있기 때문에, data의 갱신을 View가 자동으로 받을 수 있음

 

 

2. 안드로이드에서 MVVM 패턴이란?

 

각각의 컴포넌트는 서로 reference를 가지지 않고, [ View -> ViewModel -> Model ] 형태의 단방향 dependency를 갖는다.

-> 소프트웨어를 최대한 기능적으로 작은 단위로 나눈다!

-> 그에 따라 테스트가 쉬워지고 큰 프로젝트를 상대적으로 관리하기 좋아진다.

 

View

Activity, Fragment, CustomView, Menu, Dialog... 와 같은 UI 컴포넌트

- View는 UI 업데이트를 위해 ViewModel과 바인딩한다.

- ViewModel의 상태가 변경되면 그 이벤트를 받아 UI를 갱신한다.

- Permission과 관련된 처리, StartActivity 등 내비게이션 역할도 담당

 

Model

Network, DB, SharedPreferences 등 다양한 Data Source로부터 필요한 데이터를 준비

- ViewModel에서 데이터를 가져갈 수 있게 데이터를 준비하고, 그에 대한 '이벤트'를 보냄.

 

ViewModel

View와 Model 사이의 매개체 역할

- Model에서 제공받은 데이터를 UI에서 필요한 정보로 가공하여 View 가 가져갈 수 있게 데이터 변경에 대한 '이벤트'를 보냄

 

 

 

[참고사이트]

안드로이드 MVVM 패턴

안드로이드 MVVM 패턴이란?

 

728x90

'Android' 카테고리의 다른 글

[안드로이드] Databinding이란?  (0) 2021.05.28
[안드로이드] LiveData란?  (0) 2021.05.20
'Android' 카테고리의 다른 글
  • [안드로이드] Databinding이란?
  • [안드로이드] LiveData란?
kiminae
kiminae
공부한 내용을 정리합니다.
  • kiminae
    데이터 다루는 사람
    kiminae
  • 전체
    오늘
    어제
    • 분류 전체보기 (67)
      • AI & 빅데이터 (6)
        • kafka (10)
        • [Book] 빅데이터를 지탱하는 기술 (12)
      • 알고리즘 (19)
      • 알고리즘 문제풀이 (13)
        • programmers (0)
        • 백준 (1)
        • LeetCode (12)
      • Android (3)
      • Book&Lesson (13)
        • [Lesson] 프로그래머스 커뮤러닝 (Pyth.. (1)
      • 참고한 글들 (1)
      • 컨퍼런스 정리 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    카프카클라이언트
    Algorithm
    MPP데이터베이스
    개인화추천
    데이터시각화
    머신러닝
    Kafka
    추천알고리즘
    알고리즘문제
    시간복잡도
    BI도구
    릿코드
    mvvm
    hadoop
    카프카
    leetcode
    리트코드
    알고리즘풀이
    빅데이터를지탱하는기술
    ViewModel
    정렬
    버블정렬
    정렬알고리즘
    빅데이터
    알고리즘
    sort
    파이프라인구축
    데이터엔지니어
    트리
    DP문제
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
kiminae
[안드로이드] 안드로이드 MVVM 패턴
상단으로

티스토리툴바