자바 기반 웹 개발자가 MVVM 아키텍처를 다음과 같이 이해하면 되나?

2016-01-09 17:06

최근에 모바일에 관심을 가지면서 iOS 앱을 공부하고 있다. 이전에 Objective-C는 정말 너무 생소해 적응하기 힘들어서 포기했는데 Scala 경험 때문인지 Swift는 너무 친숙해 금방 익숙해 지고 있다.

따라하기 식으로 몇 개의 앱 개발해 본 후 관련 문서 찾다보니까 MVVM 아키텍처에 대해 설명하고 있는데 내가 지금까지 개발하던 경험을 바탕으로 다음과 같이 이해해 봤다.

  • MVVM 아키텍처는 기존 iOS의 MVC에 근간을 두고 있다. MVC에서 Controller에 많은 Presentation Logic이 추가되는 경향이 강하다. 이는 테스트하기도 어렵고, Controller가 너무 많은 일을 하는 경향이 있다.
  • 이 Presentation Logic을 ViewModel을 추가해 해결하자는 것이 근간이다. 즉, Controller의 로직을 ViewModel로 이전함으로써 테스트하기도 쉽고, Controller를 가볍게 유지할 수 있다.
  • 자바와 비교해 보면 Question이라는 Domain 객체가 있을 경우 이 데이터를 View에 전달할 때 QuestionDTO에 Question을 전달하고, QuestionDTO에서 View에서 출력할 데이터 형태로 변환하는 작업을 담당하는 방식이다. 여기서 QuestionDTO가 MVVM 아키텍처에서 ViewModel 역할을 하는 것이라 생각할 수 있다.

지금까지 웹 MVC 기반으로 개발하는 경우 많은 Presentation Logic을 커스텀 태그를 활용해 View에 직접 해결했다. 물론 가끔은 View의 Presentation Logic이 복잡한 경우 DTO를 추가해 해결하는 경우도 있었다. 그런데 iOS 앱의 경우 View에서 직접 조작할 수 없기 때문에 Presentation Logic이 Controller에서 처리해야 되는데 이 로직을 ViewModel이라는 Layer를 별도로 두어 처리하겠다는 것인가?

이렇게 이해하고 보니 너무 단순해서 정말 제대로 이해한 것이 맞는지 모르겠다.

이와 관련해 참고한 문서는 Introduction to MVVM, ReactiveCocoa and MVVM, an Introduction 참고했다.

0개의 의견 from FB

1개의 의견 from SLiPP

의견 추가하기

연관태그

← 목록으로