안드로이드 개발 기본을 떼고 본격적으로 개발을 해보려는 분들이라면 참고하실 좋은 레퍼런스가 있어 공유드립니다.


철 없던 시절 처음 안드로이드 개발을 하면서 저는 구조 따위가 뭐가 중요한가.. 나는 코딩의 신이다. 개발자는 구현만해주면 된다.라는 


우를 범하게 됩니다. 이 글을 보시는 분들은 그런 우를 범하지 마시길..


https://android.jlelse.eu/android-architecture-components-room-livedata-and-viewmodel-fca5da39e26b

MVVM 구조의 스켈레톤 예제라고 생각하시면 되겠습니다. 


아키텍쳐라는 영역이 그러하듯 위와 같은 구조는 안드로이드에서만 사용되는 것이 아닙니다. 


서버 등 다른 플렛폼에서도 개발의 효율성과 탄탄한 솔루션을 만들기위해 허들이 있더라도 당연히 적용해야 하는 부분입니다.


간단히 설명드리는 아래 내용을 참고하시고 위 예제 코드를 보시면 좀 더 이해가 쉬울 것 같습니다?


Model : 모델 레이어로 내 솔루션에서 필요한 기본 클래스 예를들어 사용자 정보, 일정 클래스 등 입니다. 이는 곧 DB의 entity로 연결됩니다. 


View : 뷰 레이어로 실제 사용자가 보게되는 화면에 대한 UI 구현입니다. 각종 위젯(버튼, 텍스트뷰 등)을 정의하는 코드들이 들어갑니다.


ViewModel : 모델과 뷰를 연결해주는 레이어입니다. 아키텍쳐의 기둥이 되는 부분으로 DB에서 Model을 꺼내와 가공 후 View레이어로 전달합니다.



하나의 View에는 하나의 ViewModel이 존재합니다.(Bind) 하나의 ViewModel은 여러 Model을 필요로 할 수 있습니다. 


예를들어 일정관리 솔루션에서 사용자에게 저장된 일정을 보여주고자 한다면 View는 ViewModel에 기 입력된 오늘 일정을 요청합니다. 


ViewModel은 DB에 오늘 일정 데이터 좀 꺼내달라고 요청합니다. Model은 오늘의 일정 객체들을 ViewModel에 리턴하고 ViewModel은 


만약 특정 일정을 상단에 보여줘야 한다는 요구사항이 있다면 오늘의 일정 리스트를 다시 정렬해서 View로 전달하게 됩니다. 


그럼 View는 ViewModel에서 전달 받은 리스트를 그대로 뿌려주기만 하면 됩니다. 


한마디로 출력 전 데이터를 가지고 특별한 연산이 필요한 부분은 ViewModel이 전담하게 됩니다.


모든 아키텍쳐 가이드의 시작과 모든 아키텍쳐 교수님들도 첫강의에 말씀 하시듯이 이로인해 View 코드가 간결해지고 


개발 시 UI개발자 등 각 레이어 담당의 역할 분담이 확실해지며 단위 테스트를 하기 용이해집니다.



예제 코드에서 나오는 LiveData나 Room등은 다른 포스팅을 통해 설명 드리도록 하겠습니다. 


이해가 잘 안되더라도 꼭 이해를 하시고 개발하시면서 적용해보세요.


'Android' 카테고리의 다른 글

Floating Action Button  (0) 2021.03.29
Parcelable  (0) 2021.03.24
개발 프로젝트에 Firebase 셋팅, 개발중인 앱 Firebase에 추가  (0) 2019.03.10
안드로이드 Application class  (0) 2019.03.05

+ Recent posts