안드로이드

자 이제 무엇을 할것이냐? (MVVM 패턴)

mingmaeng 2020. 1. 15. 14:02

지금까지 나는 개발을 할 때 activity에 모든 코드를 때려 박았다. 어떻게 보면 대가리만 큰 코드가 되었다고 할 수 있다.

이렇게 activity에 모든 코드를 넣어버리면 자연스럽게 어플은 무거워지고, 뭐가 뭔지 보기 힘들 것이다.

그래서 자연스럽게 디자인 패턴으로 눈이 돌아갔고, 그중 MVVM패턴을 공부할 예정이다. 현재 나의 머리로는 이해하는데 많은 시간이 소요될 것으로 본다... 누가 알려주는 사람도 없고 구글링을 하면서 공부하고 있기 때문에 계속 찾아내면서 공부해야지.. ㅎ

 

MVVM이 뭔데?

 

MVVM은 View - ViewModel - Model 로 구성된 디자인 패턴이다. 웬만한 어플은 MVVM을 적용하고 있다고 봐도 무방하다. MVC와 MVP에서도 의존성이 해결되지 않아 만들어진 MVVM인데, MVC와 MVP가 무엇인지는

다른 블로그를 보도록!

MVVM의 도식화

MVVM을 도식화 시키면 다음과 같다. 여기서 View와 ViewModel 그리고 Model은 무슨 역할을 하는지 알아보자.

 

- View : 사용자에게 보이는 화면

 

- View Model : View를 표현하기 위해 만든 View를 위한 Model. View를 나타내 주기 위한 데이터 처리 담당

 

- Model : 어플에서 사용되는 데이터 및 데이터 조작 부분 ( ex. 서버에서 들어오는 데이터 )

 

MVC, MVP, MVVM 모두 화면에 보여주는 로직과 데이터가 처리되는 로직을 서로 분리시켜서 코드를 깔끔하게 만들고, 서로의 역할을 나눔으로써 유지보수와 개발 효율을 높이는데 목적을 두고 있다.

 

동작 순서

 

 MVVM이 동작하는 순서는 다음과 같다.

 

1. 사용자의 Action이 View를 통해 들어온다.

2. Command패턴을 이용해 ViewModel에 Action을 전달한다.

3. ViewModel이 Model에서 데이터를 요청하고, Model은 ViewModel에서 요청받은 데이터를 전달한다.

4. ViewModel은 응답받은 데이터를 가공, 저장한다.

5. View는 ViewModle과의 Data Binding을 이용해 화면을 갱신한다.

 

장점

 

 - View와 Model 사이의 의존성이 없다.

 - View와 ViewModel사이의 의존성 또한 존재하지 않는다.

 - 각 부분들은 독럽적이기 때문에 개별적으로 개발이 가능하다.

 

단점

 

 - 개발하기 어렵다.

 

그럼 나는 뭘 해야 하나?

 

 MVVM이 뭔지는 알았는데 처음 보는 단어들이 보인다. 'Command패턴'과 'Data Binding'.

MVVM패턴을 적용시키려면 이 두가지 패턴을 사용한다고 한다. 그렇다면 내가 할 일은 먼저 저 두 개를 학습한 후,

조그마한 프로젝트를 통해 MVVM을 적용시켜 보는 것이다.

진행 도중에 저 패턴 뿐만 아니라 여러 가지가 추가로 적용될 수도 있는데, 그건 나중에 생각하겠다.

공부가 어느정도 진행이 되면 위의 두 가지 패턴에 대해서 추가로 포스팅을 올리겠다.