본문 바로가기

Android

Architecture Patterns (MVC, MVP, MVVM)

MVI에 대한 글을 작성하기에 앞서 여러 Architecture Pattern들에 대해 간단하게 정리.

1️⃣ MVC ( Model - View - Controller )

웹 애플리케이션에서 가장 많이 쓰이는 아키텍처 패턴 중의 하나이다.

 

✅ Model: 애플리케이션에서 사용되는 데이터와 데이터를 처리하는 부분이며, 비즈니스 로직을 나타낸다.
✅ View: UI 컴포넌트로 사용자에게 보여지는 부분이다.
✅ Controller: 사용자의 Action을 입력받고 처리한다. 모델과 뷰 사이에서 협력자 역할을 한다.

 

[장점]

  1. 여러 개의 뷰를 모델에 빌드할 수 있다.
  2. 변경사항이 모델 전체에 영향을 주지 않는다.
  3. 데이터를 어떠한 형태의 가공 없이 반환한다.

[단점]

  1. View와 Model 사이의 의존성이 높아질 수 있다.

2️⃣ MVP ( Model - View - Presenter )

View와 Model의 높은 의존성을 가진 MVC의 단점을 해결하기 위한 패턴이다. Controller가 사라지고 Presenter가 포함된다.

 

✅ Model, View

MVC 패턴과 동일하다.


✅ Presenter

사용자로부터 모든 UI 이벤트를 수집하고 이를 Model로 보내며 결과를 View로 보낸다.
MVC의 Controller의 역할과 View의 Interface를 포함한다고 보면된다.

 

[장점]

  1. View와 Model 사이에 의존성이 낮다.
  2. 코드 재사용성이 높아진다. View를 컨트롤 하기 위해 여러 개의 Presenter를 가질 수 있다.

[단점]

  1. View와 Presenter 사이의 의존성이 높아지는 경향이 있다.

3️⃣ MVVM ( Model - View - ViewModel )

✅ ViewModel

View를 나타내주기 위한 Model이자 그 데이터를 처리하는 부분이다.

View의 상태를 유지시키고 View의 이벤트를 활성화시킨다.

 

[로직]

  1. View에 Action을 수집하고 ViewModel로 전달한다.
  2. ViewModel은 Model에 데이터를 요청한다.
  3. Model은 해당 요청에 따른 응답을 ViewModel에 보낸다.
  4. ViewModel은 해당 응답을 가공하여 저장한다.
  5. View는 ViewModel을 관찰하고 있다가 변화가 감지되면 View를 업데이트 시킨다.

[장점]

  1. View와 Model 사이에 의존성이 없다.
  2. 각 부분이 독립적으로 구현되기 때문에 모듈화하여 개발할 수 있다.