안드로이드의 디자인 패턴을 공부하다 보면 자주 나오는데, 간단하게 설명되어 있는 자료가 없습니다.
몇년 전에 이 설명을 봐도 와닿지가 않았는데, 앱 여러개 더 만들어보고 나니깐 설명이 와닿네요.
한번 해보겠습니다.
- MVC
앱을 처음 만들 때 아마 모두 MVC라고 생각합니다. 한번 그림을 보겠습니다.
여기는 우리가 아는 모든게 다 있습니다.
View에 xml이 정의되어 있고
Controller에 Activity가 있고
Model이라고 데이터 타입이 정의된 곳이 있습니다.
아래의 예제 코드를 보시면 더 쉽게 와닿을 수 있는데
Activity(Controller)안에서 모든 것을 다 처리해주고 있습니다.
model부분이라고 해봤자, model = new Board(); 이런식으로 모델 불러와서 사용해주고
findViewById를 통해서 모두 다 view에 접근해줄 수 있습니다.
이렇게 하면 문제가 생기는데 모든 값을 Activity에 다 때려넣어서 액티비티가 몇천줄이 될 수 있습니다.
당연히 관리하기 힘듭니다.
- MVP
얘를 그림으로 한번 보면
아래와 같이 나옵니다.
이 친구는 C(Controller)대신 P(Presenter)가 생겼습니다.
그리고 View에 Activity가 들어갔고, Presenter라는 애가 생겼습니다. Presenter에서 로직을 모두 처리하는 느낌인데 코드를 한번 보겠습니다.
Presenter에서 로직을 모두 처리해주고, interface라는 것을 통해서 view와 연결되는 모습입니다.
그런데 별로 와닿지는 않기 때문에, 다른 예제를 통해서 좀 더 자세하게 살펴보겠습니다.
Activity에서 view에 접근하고
Presenter에서 통신하기 위해 Interface만들어주고
Presenter에서 로직을 처리해줍니다.
자, 결론을 본다면 아래와 같습니다.
- MVVM
마지막 MVVM입니다. 안드로이드에서 굉장히 많이 사용하는 형태입니다.
그림부터 보고 가면
ViewModel이라는 친구가 나와서 모든 로직을 처리해주고 있습니다.
결론적으로 하면
MVC - 역할에 따라 구분하자
MVVM - 화면을 알아서 그리고, viewModel에서 데이터만 변경
MVP - view와 로직을 변경
- 참조
https://www.youtube.com/watch?v=UdEbp18J3_w
https://www.youtube.com/watch?v=bjVAVm3t5cQ&t=244s
https://academy.realm.io/kr/posts/eric-maxwell-mvc-mvp-and-mvvm-on-android/
https://www.youtube.com/watch?v=UdEbp18J3_w
'Android(Kotlin)' 카테고리의 다른 글
anti MVVM Pattern (0) | 2021.08.27 |
---|---|
Sealed class vs Enum (0) | 2021.08.27 |
Clean Architecture (0) | 2021.08.24 |
코루틴(Coroutine) (0) | 2021.08.23 |
Android Workmanager (0) | 2021.08.22 |