MVC MVP MVVM

EunJi·2023년 11월 5일
0

순서

MVC -> MVP -> MVVM


MVC

Model - View - Controller

Model: 데이터
Controller: Model과 View 사이에서 데이터를 관리
View: 화면에 보이는 애

Controller의 데이터 관리란,

  • 사용자 input 받기
  • 해당 input에 대한 처리 담당
  • 처리한 것에 대한 결과를 화면에 뿌리기
    -> 전부 다 Controller가 관리한다.

MVP

Model - View = Presenter

Model: 데이터
View: 사용자 input 받아들이기
Presenter: 화면에 어떤 내용이 보여지는지만 담당

  • view: input, output 다 관리
  • presenter: 하지만, input이 들어오면 무조건 나에게 알려! 내가 어떤걸 보여줘야할지 로직을 처리할게
    사실상 input, ouput에 대한 처리를 모두 하지만, 화면이랑은 상관이 없음. 직접적으로 얘가 보여주는게 아님.
    Controller에서 화면을 직접적으로 보여주는 기능만 없어진것임.
  • view를 약간 멍청하게
  • 사용자 input을 view가 담당!
  • UIViewControlelr (Button, Label 등) / input 담당
  • MVC: Controller
  • MVP: View
  • View: Presenter = 1:1
    따라서, view 하나 만들때마다 presenter도 하나씩 만들어야함.
    비슷한 화면 비슷한 데이터 비슷한 로직 -> 그럼에도 항상 presenter 개별로 만들어줘야함.
    Flow: View에서 input -> Presnter로 전달 -> Presenter가 로직 처리 -> View로 어떤걸 보여줘야할지 알려줌 -> View에서 보여줌

MVVM

Model - View - ViewModel

Model: 데이터 관리
View: View가 ViewModel을 계속해서 지켜봐서 ViewModel이 바뀌면 화면을 바꿈.

ViewModel: 화면에 뭘 그려야할지는 View 네가 알야서 정해.
그냥 화면에 보여지는 데이터 요소만 관여.
즉, Model과만 서로 상호작용.
데이터만 가지고 있고 처리함.
즉, View에게 어떤 것을 그리라고 시키지 않음.

View: input에 대한 것도 Input이 되었다고 알림.
-> ViewModel: 그러면 데이터 바꿀게 -> Model과 소통 -> ViewModel: 데이터 바꾸기 -> View: ViewModel 계속해서 쳐다보다가 바꼈다! 하면 그에 따른 화면 바꿈.

  • 여러 View 이더라도, 비슷한 데이터를 가지고 있으면,
    전부 동일 ViewModel을 공유할 수 있음.
    즉, 특정 화면에 대해 어떤걸 띄우라고 시키지 않고 데이터만 가지고 있어서 가능한 것.

참고

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

profile
말하는 감자

0개의 댓글

관련 채용 정보