본문 바로가기

CS/디자인 패턴

MVC, MVP, MVVM

Model, View, Controller로 어플리케이션 구성 요소를 나누어 개발하는 패턴.

재사용성과 확장성이 용이하며 어플리케이션이 복잡해 질수록 모델과 뷰 관계 복잡

Controller는 여러 개의 View를 선택할 수 있음(1:N)

View는 Controller를 알지 못함

  1. 모델 - 어플리케이션의 데이터(db, 상수, 변수 등)
  2. 뷰 - 사용자 인터페이스 요소(보이는 부분). 모델 정보 따로 저장X, 변경 시 컨트롤러에 전달
  3. 컨트롤러 - 모델과 뷰 잇는 역할. 이벤트 등 메인 로직 담당
   이벤트→            갱신→

뷰    ↔     컨트롤러    ↔    모델

    ←갱신             ←알림

8) MVP 패턴

Model, View, Presenter로 어플리케이션 구성 요소를 나누어 개발하는 패턴

MVC와 유사하나 View와 Presenter가 일대일 관계로 더 강한 결합.

View와 Model 사이에 의존성이 없음

     이벤트→           갱신→

뷰     ↔     프레젠터    ↔    모델

     ←갱신            ←변경

9) MVVM 패턴

Model, View, ViewModel로 어플리케이션 구성 요소를 나누어 개발하는 패턴

UI를 별도의 코드 수정 없이 재사용 가능하며 단위 테스트하기 좋음.

ViewModel과 View는 1:N 관계.

View와 ViewModel(데이터 바인딩 이용), 그리고 View와 Model 사이의 의존성이 없음

     databinding,command        갱신→

View       ↔       ViewModel      →       Model 

         ←알림                   ←알림

 

 

특징 MVC MVP MVVM
관계 V 와 C 는 1 : n관계 V 와 P는 1 : 1관계 V 와 VM 는 1 : n관계
참조여부 V는 C 참조 x V는 P 참조 o V는 VM 참조 o
단위테스트 보통 P와 의존성이 커 어렵 가장 쉬움
안드로이드 API 의존 높음 보통 낮음

 

출처

https://velog.io/@ich0906/%EB%94%94%EC%9E%90%EC%9D%B8-%ED%8C%A8%ED%84%B4

 

디자인 패턴

디자인 패턴 기초

velog.io

 

 

출처 : 면접을 위한 CS 전공지식 노트

'CS > 디자인 패턴' 카테고리의 다른 글

의존성 주입과 전략 패턴의 차이  (0) 2022.07.22
Flux 패턴  (0) 2022.07.22
프록시 패턴  (0) 2022.07.22
옵저버 패턴  (0) 2022.07.22
전략 패턴  (0) 2022.07.22