티스토리 뷰

CS/기타

MVC에서 MVP를 거쳐 MVVM까지

Sueaty 2021. 10. 19. 03:07

누군가 제게 MVC, MVP, MVVM 각각에 대해 설명을 해보라고 한다면 어렴풋이 설명은 할 수 있다고 생각해요.

그런데 아마 각 객체의 역할과 관계 정도만 간단하게 말할 수 있을 것 같더라구요.

그래서 제가 나름 신뢰할 수 있는 사이트, 개발자 분들의 글과 영상을 요약해서

MVC, MVP, MVVM의 특징에 대해 요약해 보려고 합니다.

 

MVC

 

MVC 이상
MVC 현실

VIEW CONTROLLER MODEL
사용자의 입력을 받음 view가 받은 사용자 입력으로 model 업데이트, 업데이트 된 모델로 view를 업데이트 data와 관련
  이상적인 방식은 delegation pattern을 사용한 view와 model의 중간 다리 역할
(ex. UITableView의 UITableViewDataSource)
[ex] persistence, model objects,
parsers, managers, networking

MVC → MVP

- view controller가 부담해야할 일이 너무 많아졌음

- view와 controller이 너무 밀접(controller가 view의 ife cycle에 지나치게 관여)해서 재사용성이 떨어지고 테스트가 어려움

 

MVP

VIEW PRESENTER MODEL
view + view controller input과 ouput에 대한 로직 처리  
input을 받아 presenter에게 전달 view가 무엇을 보여줘야 하는지 알려줌  

- 로직(presenter)과 뷰가 분리되며서 test가 가능한 구조가 됨

- view를 쉽게 mock 할 수 있고 presenter는 레이아웃과 관련 된 코드는 전혀 없음

 

MVP → MVVM

- view 하나에 presenter 하나가 필요해서 비슷한 화면과 로직을 가지더라도 presenter를 무조건 만들어야 함

 

MVVM

VIEW VIEW MODEL MODEL
view model을 관찰하고 있음 화면에 그릴 요소를 갖고 있음
(그릴지 말지 판단은 view의 몫)
 
view 업데이트에 대한 판든을 스스로 함 모델과 소통하고, view는 신경쓰지 않음  

- 화면과 로직이 비슷하다면 같은 view model을 사용해도 됨 (MVP는 view : presenter = 1 : 1 이었음)

- view model: model의 변화를 유발하고, 업데이트 된 model을 가지고 스스로 업데이트 한다

출처

'CS > 기타' 카테고리의 다른 글

[GitHub] Personal Access Token  (3) 2021.08.23
[CS] Namespace 란? Swift Namespace?  (2) 2021.04.22
[Git] Terminal logout & login (OSX)  (0) 2021.04.15
대기업 코딩 테스트 공부방법  (0) 2019.06.02
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함