본문 바로가기
💡 Today I Learned/스터디 자료정리

[스터디5일차] MVVM 패턴

by 솔비님 2024. 10. 25.

 

 

MVVM이란?

Model - View - ViewModel의 약자로 UI와 비즈니스 로직을 분리한다
각각 특정한 역할을 담당하며 독립적으로 동작할 수 있게 만들어져 코드의 가독성이 높아지고 유지보수테스트를 쉽게 한다

 

1.  Model

  • 데이터 구조를 표현하여 데이터를 처리한다.  → MVC와 동일
  • 예를 들어, 사용자의 정보를 가져오거나 서버*에서 데이터를 받아온다   *파이어베이스같은 데이터베이스, 또는 네트워크
    (ex. 연락처앱의 PhoneBook 구조체) 

2.  View

  • ViewModel을 관찰하여 사용자에게 보여지는 UI 요소를 처리한다(데이터 바인딩)
    (ex. UIButton, UITableView, UIViewController..)
  • 데이터를 직접 접근 및 처리하지 않고 보여주기만 한다

3.  ViewModel

  • View와 Model의 사이에서 데이터를 주고받고, View가 필요로 하는 형태로 데이터를 가공한다

 

 

 

MVVM의 특징

1.  UI 로직과 비즈니스 로직이 분리된다

  • UI 로직: 뷰를 그리는 로직
  • 비즈니스 로직: UI 로직이 아닌 앱의 기획사항에 따른 데이터 흐름을 처리하는 로직.

2.  UI 로직과 비즈니스 로직의 분리가 일어났다는 것은 테스트 코드를 작성하기 용이하다는 것과도 같다

3.  UIViewController 의 책임이 MVC 때보다 덜어진다

 

 

 

MVVM의 장점

1.  간편한 유지보수
     UI와 로직이 분리되어 독립적이다 → 디자인을 바꿔도 데이터 처리 로직에는 영향을 주지 않는다

2.  테스트가 용이
     View는 기능과 별개로 동작하여, ViewModel과 Model만 테스트 하면 된다
     → 앱의 핵심 기능이 잘 작동하는지만 간단히 확인이 가능하다

3.  코드의 재사용성 증가
     ViewModel에서 작성한 로직을 다른 화면에서 동일하게 사용할 수 있다
     동일한 데이터가 필요한 두 화면이 있을 경우 새로운 로직을 작성할 필요 없이 연결만 해주면 된다