MVVM 패턴에 대하여

Updated:

MVVM 패턴


  • View
    • Display
    • 사용자에게 제공되어 지는 UI
    • 사용자의 input이 처리됨
  • ViewModel
    • View
  • Model
    • Data
    • Business Logic들이 들어가는 곳이다.
  • 등장 배경
    • MVC 패턴은 Model과 View의 의존관계가 점점 심해져서 비대해진다
    • Controller는 View를 선택만 하고, 단지 전달하는 역할만 하기 때문에
    • 예를 들어, Model이 변경되면 수정포인트가 엄청 많아진다
  • 특징
    • View 와 ViewModel은 n : 1 관계이다
    • Command PatternData Binding을 사용한다
      • Command Pattern: View에 입력이 들어오면 커맨드 패턴으로 ViewModel에 명령.
        • View → ViewModel
      • Data Binding: ViewModel의 값이 변하면 자동으로 UI가 업데이트됨.
        • ViewModel → View
  • 동작 원리
    1. 사용자의 Action이 View를 통해 들어옴
    2. View에서 Action이 들어오면, Command 패턴으로 ViewModel에 Action을 전달
    3. ViewModel은 Model에게 데이터를 전달
    4. Model은 ViewModel에게 요청 받은 데이터를 응답
    5. ViewModel은 응답 받은 데이터를 가공하여 저장
    6. View는 ViewModel과 데이터바인딩하여 화면을 나타냄
  • 장점
    • Model과 View 사이의 의존성이 없다.
    • View와 ViewModel 사이에 의존성이 없다.
    • 독립성을 유지하기에
      • 효율적인 유닛 테스트를 할 수 있다.
      • 모듈화 하여 개발할 수 있다.
  • 단점
    • 뷰에 대한 처리가 복잡해질수록 뷰모델이 거대해져 오버스펙이 될 수 있다.
    • 단순한 UI 작업에서는 MVVM을 구현하는것이 오히려 지나치게 과한것일 수 있다.
    • 앱이 너무 거대해지면 앱의 메모리 소모가 데이터 바인딩때문에 커진다.
    • ViewModel의 설계가 쉽지 않다.



출처 :

https://hackersstudy.tistory.com/71

https://velog.io/@dev_space/MVVM-패턴

Leave a comment