티스토리 뷰
누군가 제게 MVC, MVP, MVVM 각각에 대해 설명을 해보라고 한다면 어렴풋이 설명은 할 수 있다고 생각해요.
그런데 아마 각 객체의 역할과 관계 정도만 간단하게 말할 수 있을 것 같더라구요.
그래서 제가 나름 신뢰할 수 있는 사이트, 개발자 분들의 글과 영상을 요약해서
MVC, MVP, MVVM의 특징에 대해 요약해 보려고 합니다.
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
링크
TAG
- SWIFT
- 부스트캠프2020
- 보안
- 컴과졸작
- swacademy
- 삼성
- 운영체제
- C++
- 프로그래머스
- 인턴
- 소프트웨어아카데미
- ios
- 부캠
- TableView
- 커넥트재단
- 알고리즘
- 컴공졸작
- 삼성소프트웨어아카데미
- 개발자인턴
- 부스트캠프
- 컴퓨터공학
- 코테
- RxSwift
- 졸업작품
- OS
- firebase
- 소프트웨어역량시험
- 데이터분석
- 코딩테스트
- nosql
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함