![[안드로이드] MVVM 패턴이란?](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FboukeS%2FbtsIAdvSTUA%2FWw8dHLSB0yFKrhY0AR3UZ0%2Fimg.png)
안녕하세요 이번 포스팅에서는 Presentation Model Design Pattern인 MVVM 패턴에 대해 알아보려고 합니다.
MVVM 패턴이란?
Model, View, ViewModel의 약자로 비즈니스 로직과 프레젠테이션 로직을 명확하게 분리하는 패턴입니다.
MVVM은 Microsoft의 WPF(Window Presentation Foundation) 프레임워크에서 유래한 디자인 패턴으로 UI 관련 문제를 처리하는데 효과적이기 때문에 Android개발에서 인기를 얻은 디자인패턴입니다. MVVM은 기존 MVC(Model-View-Controller) 패턴을 기반으로 현대 UI 요구 사항에 맞게 등장하게 되면서 View와 Model 사이의 의존성뿐만 아니라 View와 Controller 사이의 의존성도 고려하여 설계된 디자인 패턴입니다.
또한, MVP(Model-View-Presenter) 패턴과는 다르게 ViewModel은 Model을 가지고 있지만 View는 가지고 있지 않습니다.
즉, 1:N 매칭이 되면서 View와 ViewModel 사이의 의존성이 제거가 되고 코드 중복을 줄였습니다.
MVVM 패턴 구조
View
1. Activity / Fragment가 View 역할을 합니다.
2. 사용자가 보는 화면을 표시하고 사용자의 입력을 처리합니다.
3. ViewModel의 데이터를 관찰하여 UI를 갱신해줍니다.
ViewModel
1. View에서 발생하는 이벤트를 감지하고 해당 이벤트에 맞는 비즈니스 로직을 수행합니다.
2. View가 요청한 데이터를 Model로 요청합니다.
3. Model로부터 요청한 데이터를 받습니다.
4. View에 표시할 데이터를 가공하여 제공해 줍니다.
Model
1. 데이터를 가져오고 저장하는 역할을 수행합니다.
2. 보통 데이터베이스(Room, DataStore 등)또는 Retrofit을 통한 백엔드 API 호출 ( 네트워킹)등을 수행합니다.
3. 데이터와 비즈니스 로직을 담당하는 부분입니다.
MVVM 패턴 장점
1. 뷰와 비즈니스 로직이 분리가 되어있어 생산성을 높일 수 있습니다. ( UI가 없어도 개발이 가능 )
2. 테스트가 수월합니다. ( 의존성이 없기 때문 )
3. 뷰와 뷰모델이 1:N 관계 이기떄문에 중복되는 로직을 모듈화 해서 여러 뷰에 적용할 수 있습니다.
4. ViewModel이 데이터를 가지고 있어 Memory Leak ( 메모리누수 ) 발생 가능성을 배제할 수 있습니다.
( View가 직접 Model에 접근하지 않아 Activity / Fragment 라이프 사이클에 의존하지 않기 때문 )
포스팅을 마치며..
MVVM패턴은 Anroid개발에 있어 정말 좋은 패턴이기에 잘만 사용한다면 훌륭한 앱을 만들 수 있다고 생각합니다. 하지만 그만큼 구조가 복잡하다는 단점과 진입장벽이 높습니다.
이에 따라 간편하게 적용을 할 수 있도록 구글에서 AAC라는 것을 제공하는데
지금은 최대한 MVVM패턴에 대한 핵심만 집어 넣은 느낌이라면 다음 포스팅에선 AAC와 함께 조금 더 자세하게 포스팅할 예정입니다!
'Android Studio > - Programming' 카테고리의 다른 글
[안드로이드] 4대 컴포넌트 (0) | 2024.05.13 |
---|---|
[안드로이드/viewBinding] 뷰바인딩은 무엇이고 어떻게 사용할까? (0) | 2024.04.30 |
[안드로이드] 액티비티 생명주기 ( Activity Lifecycle ) (0) | 2024.04.24 |
[안드로이드/Regex] 정규표현식, 회원가입 유효성 검사 (0) | 2024.04.08 |
[코틀린] lateinit과 by lazy의 차이점 (0) | 2024.03.29 |
주코딩의 개발 노트!
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!