[flutter] 플러터와 MVC/MVP/MVVM 아키텍처 비교
플러터(Flutter)는 Google에서 개발한 오픈 소스 앱 개발 프레임워크로, 휴대폰, 웹, 데스크톱 및 기타 플랫폼용으로 고성능 네이티브 앱을 빠르고 쉽게 구축할 수 있습니다. 플러터 개발을 위해서는 앱의 아키텍처를 선택해야 합니다. 이번 블로그에서는 플러터에서 사용 가능한 MVC, MVP 및 MVVM 아키텍처에 대해 비교해보겠습니다.
목차
MVC 아키텍처
MVC(Model-View-Controller) 아키텍처는 세 가지 요소로 구성됩니다.
- 모델(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 아키텍처를 살펴보았을 때, 각각의 장단점을 고려하여 플러터 앱의 규모와 복잡도에 맞는 아키텍처를 선택하는 것이 중요합니다.