MVC/MVP/MVVM 차이점 알아보기

suojae·2023년 11월 30일
0

[iOS] 아키텍쳐

목록 보기
11/11

출처:
https://www.youtube.com/watch?v=bjVAVm3t5cQ
https://www.youtube.com/watch?v=azFmaTZUy7k


Model-View-Controller

  • 화면에 보이는 책임은 View, 데이터는 Model 그 사이에서 컨트롤하는게 UIViewController

  • Controller에서 사용자의 인풋, 처리, 아웃풋 전부 담당


Model-View-Presenter

  • 인풋은 View가 다받아! 하지만 받고나면 Preesenter에게 알려줘! Presenter가 다 처리해줄게
  • Presenter에서 너 이거 그려하면 View는 명령에 따라서 그리기만해!
  • Presenter 는 뜻그대로 화면에 보여줄 로직을 관리해준다
  • 따라서 사진과 같이 ViewPresenter의 관계는 1대1 관계이다!!
  • 문제는 이러한 1대1관계를 유지하기 위해서는 뷰하나 만들 때마다 프리젠터를 하나씩 만들어야한다.
  • 그래서 로직은 같더라도 뷰가 다르면 같은 로직의 프리젠터를 하나씩 더 만들어야한다

Model-View-ViewModel

  • MVVM 패턴을 사용하면 MVP의 1대1관계 문제를 보완할 수 있다
  • MVP 패턴과 다르게 ViewModelView에게 명령을 내리지 않는다.
  • 따라서 ViewModelModel이랑만 놀게된다
  • 그렇다면 어떻게 그리느냐! ViewViewModel관찰(구독)한다
  • 따라서 뷰가 다르더라도 똑같은 로직을 가지고 있으면 ViewModel관찰(구독)하여 1대1 대응문제를 벗어났다

  • 위 코드(뷰)를 살펴보면 아무런 판단도 하지 않고 화면을 그리기만한다
  • onNext()를 통해 인풋이 들어왔습니다, 뷰모델님 하고 그냥 토스해버린다
  • 뷰모델이 인풋값가지고 지지고 볶아서 요리하고나면 결과물을 subscribe()해서 뷰를 바꾼다
profile
Hi 👋🏻 I'm an iOS Developer who loves to read🤓

0개의 댓글