mvc, mvm, mvvm 패턴 이해하기
# mvc, mvm, mvvm 패턴에 대해 알아볼까요?
2024년 01월 12일
개요
소프트웨어 개발에서 사용되는 디자인 패턴은 애플리케이션의 구조와 유지보수성을 높이기 위해 일정한 규칙을 따르는 방식이다. 그 중에서 MVC, MVM, MVVM 패턴은 대표적인 아키텍처 패턴으로, 각각의 개념과 특징에 대해 알아보자
mvc 패턴
mvc 패턴은 가장 널리 사용되는 패턴 중 하나로, 애플리케이션을 세 가지 주요 구성 요소 Model, View, Controller로 나누어 관리한다.
Model : 어플리케이션에서 사용되는 데이터를 처리하는 부분으로 앱이 포함해야할 데이터가 무엇인지를 정의한다. 데이터가 변경되면 모델을 뷰에게 알린다.
View : 모델에 포함된 데이터를 이용하여 화면을 나타낸것으로 앱의 데이터를 보여주는 방식을 정의한다. 해당 데이터는 모델 또는 컨트롤러를 통해 받는다.
Controller : 사용자의 입력을 받아 처리하는 부분으로 Client로부터 응답을 받아 Model 또는 View를 업데이트 하거나, 데이터를 전달해주는 역할을 한다.
MVC 패턴의 장점
- 역할이 명확하게 분리되어 있다.
- 유지보수와 테스트가 용이하다.
- 변화를 쉽게 수용할 수 있다. 즉 뷰를 변경하더라도 모델과 컨트롤러에는 영향이 적다.
MVC패턴의 단점
- 뷰와 컨트롤러 간의 강한 결합으로 인해 하나를 수정하면 다른 하나도 수정해야 하는 경우가 발생한다.
- 모델, 뷰, 컨트롤러 각각을 별도로 관리해야 하므로, 과도한 복잡성을 초래할 수 있다.
mvm 패턴
MVM 패턴은 비교적 덜 알려져 있으며, 간단한 애플리케이션이나 소규모 프로젝트에서 자주 사용된다. 이 패턴은 구조적으로 MVC와 유사하지만 관리자(Manager)를 포함하여 뷰와 모델 간의 상호작용을 관리한다. mvm 패턴은 애플리케이션을 Model, View, Manager으로 세 가지 주요 구성 요소로 나누어 관리한다
Model (모델)
모델은 애플리케이션에서 사용되는 데이터를 처리하는 부분으로, 비즈니스 로직과 데이터를 관리한다. 데이터베이스와의 상호작용 및 데이터 조작을 처리한다
View (뷰)
뷰는 사용자 인터페이스(UI)를 나타내며, 모델에 포함된 데이터를 이용하여 화면을 구성한다. 뷰는 사용자가 볼 수 있게 데이터를 화면에 표시하고, 주로 모델 또는 매니저를 통해 데이터를 받는다.
Manager (매니저)
매니저는 애플리케이션의 로직을 처리하며 사용자의 입력을 받아서 모델을 업데이트하거나 뷰를 갱신하는 역할을 하며, 모델과 뷰 사이의 데이터 흐름을 조정한다.
MVM 패턴의 장점
- 구성 요소의 단순함과 명확함 덕분에 소규모 프로젝트나 간단한 애플리케이션에서 쉽게 적용할 수 있다.
- 모델, 뷰, 매니저 간의 역할 분리가 명확하여 유지보수와 코드 이해가 용이하다.
- 모델과 뷰가 별도로 존재하므로, 코드의 재사용성이 높아질 수 있다.
MVM 패턴의 단점
- 큰 프로젝트나 복잡한 애플리케이션에서는 구조의 단순함이 오히려 단점이 되어 확장성과 유연성이 떨어질 수 있다.
- 로직이 매니저에 집중될 경우, 매니저 클래스가 비대해지고 복잡해질 수 있다.
mvvm 패턴
MVVM 패턴은 애플리케이션을 Model, View, ViewModel 세 가지 주요 구성 요소로 나누어 관리한다
Model (모델)
모델은 애플리케이션에서 사용되는 데이터를 처리하는 부분으로, 비즈니스 로직과 데이터를 관리한다. 데이터베이스와의 상호작용 및 데이터 조작을 처리한다.
View (뷰)
뷰는 사용자 인터페이스(UI)를 나타내며, ViewModel에서 제공되는 데이터를 화면에 바인딩한다. 사용자가 볼 수 있게 데이터를 시각화하고, UI 상호작용을 처리하는데, 일반적으로 XAML, HTML 같은 마크업 언어로 정의된다.
ViewModel (뷰모델)
뷰모델은 뷰와 모델 사이의 중간자 역할을 하며, 뷰가 필요로 하는 데이터를 준비하고 비즈니스 로직을 수행한다. 뷰모델은 뷰의 상태와 동작을 나타내며, 뷰와 모델 간의 데이터 바인딩을 관리한다.
MVVM 패턴의 장점
- 뷰모델을 통해 뷰의 상태를 쉽게 관리할 수 있다.
- 역할의 분리 덕분에 뷰와 비즈니스 로직을 독립적으로 수정하고 재사용할 수 있다.
- 데이터 바인딩을 통해 코드 상의 상호작용 없이도 모델과 뷰 간 데이터 동기화를 자동으로 처리할 수 있다.
MVVM 패턴의 단점
- 데이터 바인딩과 커맨드 패턴 사용으로 뷰모델이 복잡해질 수 있다.
- 과도한 데이터 바인딩은 성능 저하를 일으킬 수 있으며, 디버깅이 어려울 수 있다.