MVC 패턴
① 구조
- Model: 애플리케이션에서 사용되는 데이터와 그 데이터를 처리하는 부분
- View: 사용자에게 보여지는 부분 (UI)
- Controller: 사용자의 입력을 받고 처리하는 부분
② 동작
1. 사용자의 이벤트가 Controller로 들어온다.
2. Controller에서 이를 확인하고 Model에서 데이터를 업데이트한다.
3. Controller는 Model을 나타낼 View를 선택한다.
4. View는 Model로부터 데이터를 받아 UI를 갱신한다.
③ 단점
- View와 Model 사이의 의존성이 커진다. -> 유지보수가 어려움
MVP 패턴
① 구조
- Model: 애플리케이션에서 사용되는 데이터와 그 데이터를 처리하는 부분
- View: 사용자에게 보여지는 부분 (UI)
- Presenter: View로부터 전달받은 이벤트를 처리하여 다시 View로 반환해주는 부분
② 동작
1. 사용자의 이벤트가 View로 들어온다.
2. View는 Presenter에 데이터를 요청한다.
3. Presenter는 Model로부터 데이터를 받아 다시 View에 반환해준다.
4. View는 Presenter로부터 받은 데이터를 화면에 나타낸다.
③ 장점
- View와 Model 사이의 의존성이 제거된다.
④ 단점
- View와 Presenter 사이의 의존성이 커진다.
MVVM 패턴
① 구조
- Model: 애플리케이션에서 사용되는 데이터와 그 데이터를 처리하는 부분
- View: 사용자에게 보여지는 부분 (UI)
- ViewModel: View를 표현하기 위한 Model
② 동작
1. 사용자의 이벤트가 View로 들어온다.
2. View는 사용자로부터 받은 Action을 ViewModel에 전달한다.
3. ViewModel은 Model에 데이터를 요청한다.
4. Model은 ViewModel에게 요청받은 데이터를 전달한다.
5. ViewModel은 응답 받은 데이터를 가공하여 저장한다.
6. View는 ViewModel과 DataBinding하여 화면에 나타낸다.
③ 장점
- LiveData를 이용해 데이터를 관찰하고 자동으로 UI를 갱신하기 때문에 생명주기로부터 안전하여 메모리 누수를 방지할 수 있다.
- 각각의 모듈은 독립적이기 때문에 모듈화하여 개발이 가능하다.
'* > Android' 카테고리의 다른 글
[안드로이드] AWS Rekognition API 사용하기 (1) | 2023.04.08 |
---|---|
[안드로이드] 서버 통신 시 예외 처리가 제대로 안 될 때 (0) | 2023.03.09 |
[안드로이드] 가로 달력 커스텀 (SingleRowCalendar) (0) | 2023.03.08 |
[안드로이드] Activity, Fragment LifeCycle (0) | 2023.03.06 |
[안드로이드] 앱 목록에서 아이콘 안 보일 때 (0) | 2023.02.19 |