Skip to content
songju edited this page Nov 3, 2020 · 1 revision

2020.10.28 수요일

MVVM & ViewModel 적용시킬 방법

  • View와 VC의 관계, 구조에 대해 고민해보기

2020.11.01 추가

  • MVVM이란?

  • MVVM은 Model - View - ViewModel의 약자로 소프트웨어 아키텍처 패턴이다.

    • Model은 데이터, View는 유저 인터페이스, ViewModel은 뷰와 모델 사이를 연결
  • MVC에서 파생된 모델로 모델과 뷰 사이 뿐만 아니라 뷰와 컨트롤러간의 의존성도 고려해 각 단위가 독립적으로 작성되고 테스트될 수 있도록 설계된 패턴이다.

  • Model(모델)의 역할

    • 데이터 모델, 데이터 접근 레이어, 비즈니스 로직등이 포함 되어있다.
    • 모델은 데이터를 얻거나 저장하거나 지우거나 업데이트에 대해 알고 있다. 이 작업들은 뷰모델에 의해 시작되며 모델이 데이터에 대한 작업을 마치면 뷰 모델에게 결과를 알린다.
    • 모델은 뷰모델이 소유하고 있고, 뷰나 뷰모델이 모델에 대해 들여다볼 수 없다.
  • View(뷰)의 역할

    • 사용자 이벤트를 수신하고 데이터를 표시하는 유저 인터페이스를 책임진다. ViewController도 View의 일부
    • 해당 이벤트들은 뷰모델에 전달되어 처리해야할 책임이 있고, 뷰는 뷰모델의 변경사항을 감지하고 뷰모델이 업데이트한 데이터를 보여준다.
    • 뷰와 모델 사이에 연결이 없고 뷰모델에 의해 연결된다.
  • ViewModel(뷰모델)의 역할

    • 뷰 모델은 로직을 담당하고 있고, 유저가 뷰에서 어떤 액션을 취할 때 모델을 변경하거나 되었을 때 해당 모델을 업데이트하고 뷰모델에게 결과를 알리고 뷰를 갱신하는 책임을 가지고 있다.

  • 특징
    • MVVM에서의 ViewModel은 View와 1:n관계를 이룬다.


뷰모델은 뷰를 나타내주기 위한 모델이자 Presentation Logic을 처리하는 역할을 한다. 따라서, 뷰에 어떤 뷰모델을 연결하느냐에 따라 로직처리가 달라지고, 모델이 변경되면 관련된 뷰모델을 사용하는 뷰가 자동으로 업데이트되는 방식이다.


각각의 뷰는 자신이 사용할 뷰모델을 선택하여 바인딩하여 업데이트를 받게되고, 뷰는 단순히 유저 인터페이스를 표시하기 위한 로직만을 담당하며, 가장 이상적인 형태는 일부 유저 인터페이스를 제외하면 오로지 메소드를 호출하는 생성자만 존재하는 것이다.


뷰와 뷰모델간에는 데이터 바인딩을 통해 특정 뷰의 속성과 뷰모델의 속성을 연결한 뒤 뷰모델 속성이 변경되면 자동으로 뷰를 업데이트 한다.


Clone this wiki locally