개발/안드로이드(Android-Kotlin)

Android Design Pattern (MVC, MVP, MVVM)

개복치 개발자 2019. 9. 28. 13:33

이번에는 안드로이드 디자인 패턴에 대해 알아보겠습니다.

 

안드로이드 앱을 만들어보셨다고 가정하고 글을 쓰겠습니다.

(이런 검색어를 검색하시는 분들은 처음 개발하시는분들은 드물 것 같아서..ㅎㅎ)

 

무슨 안드로이드 개발자 채용공고 같은데 보면 자격요견에

 

안드로이드 디자인 패턴에 대한 이해 (MV**) 같은 것들이 적혀있는 곳이 많습니다.

 

자 이게 뭔지 한번 보겠습니다.

 

1. MVC - M(Model) + V(View) + C(Controller)

 

예전부터 사용되던 디자인 패턴입니다.

 

View 같은 경우에는 xml을 파일이고, Controller는 activity파일, Model 같은 경우에는 data를 정의해놓은 모델입니다.

 

안드로이드 앱을 개발해보셨으면 다 아실 텐데, activity에서 view와 Model을 호출해서 핸들링합니다.

 

때문에, 이게 view에 이것저것 들어가게 되면, activity안에 엄청나게 코드가 많이 들어가게 됩니다. 

 

또 MVC에 단점이 있는데, view를 변경하면 contoller로 와서 수정해줘야 합니다.

 

그렇다면 MVP와 MVVM는 뭐가 다른지 알아보겠습니다.

 

 

2. MVP - M(Model) + V(View) + P(Presenter)

 

이번에는 Presenter라는 애가 튀어나왔는데,  애는 기본적으로 MVC 패턴에 controller와 비슷한 역할을 합니다.

 

다만 조금 다른 것은, view와 model을 완전히 분리해서 presenter에서 사용자 입력을 다 처리해줍니다.

 

이렇게 하면 presenter에서 유저가 입력한 액션을 처리해주는 비즈니스 로직이 들어가죠.

 

때문에 테스트코드를 작성해서 테스트가 간단하게 가능합니다.

 

다만 단점은 interface도 만들고 이것저것 만들어야 해서 코드가 많이 늘어납니다. 한마디로 귀찮아요 ㅠㅠ

 

3. MVVM - M(Model) + V(View) + VM(View Model)

 

이라는 애를 알아봅니다,

 

모델과 뷰는 모두 다 그냥 있고 컨트롤러 부분이 View Model로 변경되어 사용되는 것인데

 

얘를 한마디로 쉽게 표현하려고 많이 찾아봤는데 쉽지않네요.. 다 제가 부족한 탓입니다.

 

그래도 좀 간단하게 설명하면 view와 model간의 의존성을 완전히 없애버려서 각각 모듈화가 가능합니다.

 

뭐 장점은 view와의 의존성 분리 어쩌고 하면서 장점이 있지만, 결론은 코드 작성이 어려운거죠.

 

 

 

이번에 디자인 패턴에 대해 이것저것 알아보면서 생각해봤는데, 디자인 패턴이란게, 트렌디한 방법을 사용하는게 무조건 좋은 것이 아니라, 많은 사람들에게 익숙하고 레퍼런스를 찾기 쉬운 패턴을 사용하는게 가장 좋은 것 같습니다. 또한, 코드 양에 따라 어떤 패턴을 적용해야 할지도 고민해봐야 할 것으로 보입니다.

 

 

 

'개발 > 안드로이드(Android-Kotlin)' 카테고리의 다른 글

Cloud Firestore  (0) 2019.10.01
Cannot fit requested classes in a single dex file  (0) 2019.10.01
LinearLayout same width  (0) 2019.09.28
textView setTextSize  (0) 2019.09.28
CircleImageView  (0) 2019.09.27