BigJeon Android 개발 블로그
안드로이드 스튜디오_MVVM패턴이란? 본문
MVVM패턴이 뭘까?
-최근 여러 매체의 구인공고를 찾아보니 적지않게 볼수 있는 자격/우대 조건이 보였다.
MVVM패턴의 이해도가 높은사람 또는 MVVM을 적용한 앱을 만든적 있는 사람.
따라서 나는 MVVM패턴이 뭐고 왜 많은 기업들이 MVVM패턴에 대한 이해도를 요구하는지 알아보기로했다.
큰 프로젝트를 하게되면 UI를 처리하기위한 코드 DB를 제어하는 코드
SERVER를 제어하는 코드등 여러 코드가 생기기 마련이다.
이러한 대형 프로젝트를 일정한 패턴없이 막 쓰게된다면 코드가 복잡해질 뿐더러 한 부분을 테스트하것도 큰 일이 되어버린다. 이러한 문제를 해결하기 위해 MVC, MVp, MVVM등 많은 패턴이 사용되는데 오늘은 MVVM에 대하여 다루어볼것이다.
MVVM패턴이란?
우선 MVVM패턴을 있는 그대로 풀어서 써보겠다.
M : Model
V : View
VM : ViewModel
을 합친 용어로 MVVM이 탄생했다.
그래서 MVVM이 뭔데?
MVVM패턴이란.
하나의 큰 소프트웨어를 작은 단위로 나눈패턴이라나 뭐라나;;
그냥 쉽게말하면
프로젝트를 작게작게 나누어 개별적으로 동작하게 만드는것
그럼 어떻게 나누어 개별적으로 동작할수있게 만드는 걸까?
MVVM패턴 동작 원리
MVVM패턴의 구성은 아래와 같다.

그림으로만 봐선 잘모르겠다.
간단하게 풀어보자면.
UI를 제어하는 부분과 Data를 제어하는 부분을 구분하는것이다.
예를 들어보겠다.
View는 사람이다.
ViewModel은 도구, Model은 그 도구를 생성하는 공장이라 해보자.
사람View는 사용하고 싶은 도구들ViewModel을 입맛에 맞게 고른다.
그럼 그 사람View는 선택한 도구ViewModel만으로 작업을 할 수 있을것이다.
하지만 그 도구ViewModel이 그냥 만들어지지는 않을것 아닌가.
그 도구ViewModel를 만들어 주는 곳이 공장Model이다.
위와 같은 구조가 된다면 사람은 공장의 영향을 받지않고 그저 나왔있는 도구만 사용하면 되는것이다.
즉, View는 ViewModel만을 이용하여 View가 변경되고 Model은 View의 영향을 전혀 받지않는것이다.
추가적으로, View가 Model에 영향을 주지 않기때문에 Model은 독립적으로 테스트가 가능하다.
또한 여러사람이 한 도구를 이용할수도있지 않은가. 따라서 View와 ViewModel의 연결은 n:1의 구조를 갖게된다.∗도구가사람을정하진않지않은가ㅎㅎ
쉽게 보기위해 예시를 들었는데 이해가됐을진 모르겠다.
하지만 중요한 요점인 MVVM패턴은 UI를 다루는 부분과 DATA를 처리하는 부분을 분리하여 코드양을 줄이고, 테스트에 대한 용이함을 큰폭으로 향상시켜주는 패턴인것이다.
다음 포스팅에서는 아주 간단하게 MVVM패턴의 ViewModle과 DataBinding을 이용한 예제를 포스팅 해보도록 하겟다.
{실습 포스팅 : MVVM + LiveData 간단 실습 예제}
잘못된 내용/부적한 내용에 대한 과도한 지적은 항상 오예입니다.!