[flutter] 플러터와 MVC/MVP/MVVM 아키텍처 비교

플러터(Flutter)는 Google에서 개발한 오픈 소스 앱 개발 프레임워크로, 휴대폰, 웹, 데스크톱 및 기타 플랫폼용으로 고성능 네이티브 앱을 빠르고 쉽게 구축할 수 있습니다. 플러터 개발을 위해서는 앱의 아키텍처를 선택해야 합니다. 이번 블로그에서는 플러터에서 사용 가능한 MVC, MVP 및 MVVM 아키텍처에 대해 비교해보겠습니다.

목차

  1. MVC 아키텍처
  2. MVP 아키텍처
  3. MVVM 아키텍처

MVC 아키텍처

MVC(Model-View-Controller) 아키텍처는 세 가지 요소로 구성됩니다.

MVC는 각 요소가 명확히 분리되어 있어 유지보수가 용이하고 유연성이 뛰어나다는 장점이 있습니다.

class Model {
  // 데이터와 비즈니스 로직
}

class View {
  // 사용자 인터페이스
}

class Controller {
  Model _model;
  View _view;

  // 모델과 뷰 사이의 상호작용 관리
}

MVP 아키텍처

MVP(Model-View-Presenter) 아키텍처는 MVC와 유사하지만, Presenter가 컨트롤러보다 얇은 인터페이스를 가지고 있습니다. Presenter는 사용자 입력을 처리하고 모델 갱신 등 비즈니스 로직을 처리합니다.

MVP는 테스트하기 쉽고 모델과 뷰의 분리를 잘 이루어 유지보수가 편리합니다.

class Model {
  // 데이터와 비즈니스 로직
}

class View {
  // 사용자 인터페이스
}

class Presenter {
  Model _model;
  View _view;

  // 사용자 입력 처리 및 비즈니스 로직 처리
}

MVVM 아키텍처

MVVM(Model-View-ViewModel) 아키텍처는 뷰와 비즈니스 로직 사이에 뷰 모델(ViewModel)이 추가됩니다. 뷰 모델은 뷰의 상태를 관리하고 뷰에 표시할 데이터를 제공합니다.

MVVM은 뷰와 모델의 완전한 분리를 실현하여 테스트 용이성과 유지보수성을 높입니다.

class Model {
  // 데이터와 비즈니스 로직
}

class View {
  // 사용자 인터페이스
}

class ViewModel {
  Model _model;

  // 뷰 모델
}

위의 MVC, MVP, MVVM 아키텍처를 살펴보았을 때, 각각의 장단점을 고려하여 플러터 앱의 규모와 복잡도에 맞는 아키텍처를 선택하는 것이 중요합니다.