MVC, MVP, MVVM, FLUX

MVC, MVP, MVVM, 그리고 Flux는 모두 소프트웨어 개발에서 사용되는 디자인 패턴이다. 각각의 패턴은 다음과 같은 특징을 가진다.

MVC (Model-View-Controller)

  • 소프트웨어를 모델(Model), 뷰(View), 그리고 컨트롤러(Controller)로 구성된 패턴
  • 모델은 데이터와 비즈니스 로직을 관리하며, 뷰는 사용자 인터페이스를 표시하고 컨트롤러는 사용자 입력을 처리
  • 모델과 뷰, 뷰와 컨트롤러는 서로 독립적으로 작동

MVP (Model-View-Presenter)

  • 소프트웨어를 모델(Model), 뷰(View), 그리고 프레젠터(Presenter)로 구성된 패턴
  • 모델은 데이터와 비즈니스 로직을 관리하며, 뷰는 사용자 인터페이스를 표시. 프레젠터는 뷰와 모델 사이의 중간 역할을 하며 사용자 입력을 처리하고 뷰를 업데이트
  • MVP는 뷰와 모델 간의 직접적인 연결을 피하고 테스트 가능한 코드를 작성하기에 용이

MVVM (Model-View-ViewModel)

  • 소프트웨어를 모델(Model), 뷰(View), 그리고 뷰모델(ViewModel)로 구성된 패턴
  • 모델은 데이터와 비즈니스 로직을 관리하며, 뷰는 사용자 인터페이스를 표시
  • 뷰모델은 뷰와 모델 사이의 중간 역할을 하며, 뷰에 표시할 데이터를 가공하고 뷰의 상태를 관리
  • 데이터 바인딩을 통해 뷰와 뷰모델을 자동으로 동기화하여 코드량을 줄이고 UI와 비즈니스 로직을 분리

Flux

  • Facebook에서 개발한 애플리케이션 아키텍처 패턴
  • 데이터 흐름의 단방향성을 강조
  • 액션(Action), 디스패처(Dispatcher), 스토어(Store), 그리고 뷰(View)로 구성
  • 액션은 애플리케이션의 동작을 나타내며, 디스패처는 액션을 스토어에 전달. 스토어는 상태를 관리하고 뷰에 업데이트를 알린다.
  • 복잡한 데이터 흐름을 다룰 때 유용하며, 상태 관리를 효과적으로 처리