Android(Kotlin)

Android MVC MVVM MVP

----___<<<<< 2021. 8. 24. 03:51

 안드로이드의 디자인 패턴을 공부하다 보면 자주 나오는데, 간단하게 설명되어 있는 자료가 없습니다.

 

 몇년 전에 이 설명을 봐도 와닿지가 않았는데, 앱 여러개 더 만들어보고 나니깐 설명이 와닿네요.

 

 한번 해보겠습니다.

 

 - 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/

 

안드로이드의 MVC, MVP, MVVM 종합 안내서

MVC vs. MVP vs. MVVM 안드로이드 앱을 논리적 구성 요소로 체계화하려는 베스트 프랙티스 접근법은 최근 몇 년간 지속적으로 발전했습니다. 모델 뷰 컨트롤러(Model View Controller, MVC) 패턴을 초석으로

academy.realm.io

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