Untitled

정의

사용자 인터페이스, 데이터 및 논리 제어를 구현하는데 널리 사용되는 소프트웨어 디자인 패턴

목적 및 특징

소프트웨어의 비즈니스 로직과 화면을 구분하기 위함

장점

단점

예시

MVC 흐름

  1. 사용자가 요청
  2. 컨트롤러가 모델에게 데이터 요청
  3. 결과값을 컨트롤러에 반환
  4. 컨트롤러는 이 값을 뷰에 전달
  5. 뷰는 사용자가 보는 UI에 맞춰 결과를 보여준다.

주의 사항

  1. Model은 Controller와 View에 의존하지 않아야 한다.
  2. View는 Model에만 의존
  3. View는 사용자마다 다르게 보여주어야하는 데이터만 받아야 한다.
  4. Controller는 Model과 View에 의존 가능

비교군과의 차이

MVP

MVVM

MVI

패턴 장점 단점 특징
MVC 가장 단순한 패턴으로 여러 개발 분야에서 보편적으로 사용되는 디자인 패턴 View와 Model사이의 의존성이 높기 때문에, 이는 앱이 커질수록 유지보수가 어려움
Controller 비대
MVP MVP패턴은 인터페이스를 통해 통신하기 때문에 View와 Model사이의 의존성이 없음 View와 Presenter사이의 의존성이 높고, 앱이 커질수록 이 의존성은 더 강해짐 View에 직접 연결되는 대신 인터페이스를 통해 상호작용한다는 차이가 있음.
MVVM 데이터 바인딩을 이용한다면 View와 ViewModel 사이의 의존성을 없앨 수 있음 ViewModel의 설계가 매우 어려움
MVI 상태는 불변성을 가지기 때문에 우리는 예상 가능한 값을 얻을 수 있습니다.
데이터의 흐름이 정해져 있어 흐름을 이해하고 관리하기가 쉽다. 다른 MV들에 비해 러닝커브가 높다.
작은 변경도 모두 intent를 통해야 하고, 아주 작은 앱도 최소한의 intent와 model를 가져야 한다.

질문

출처

제리의 MVC 패턴