MVC는 사용자 인터페이스, 데이터 및 논리제어를 구현하는데 널리 사용되는 소프트웨어 디자인 패턴이다.
이는 소프트웨어의 비즈니스 로직과 화면을 구분하는데 중점을 두고 있으며,
모델(model), 뷰(view), 컨트롤러(controller)로 이루어진 디자인 패턴이다.
모델은 애플리케이션의 데이터인 데이터베이스, 상수, 변수 등을 뜻한다.
모델에서는 데이터와 비즈니스 로직을 관리한다.
뷰에서 데이터를 생성하거나 수정할 때 컨트롤러를 통해 모델이 생성 또는 업데이트 된다.
뷰는 inputbox, checkbox, textarea 등 사용자 인터페이스 요소를 나타내며 모델을 기반으로 사용자가 볼 수 있는 화면을 의미한다.
레이아웃과 화면을 처리한다.
모델이 가지고 있는 정보를 따로 저장하지 않고 변경이 일어나면 컨트롤러에 이를 전달한다.
컨트롤러는 하나 이상의 모델과 하나 이상의 뷰를 잇는 다리 역할을 하며 이벤트 등 메인 로직을 담당한다.
즉, 명령을 모델과 뷰 부분으로 라우팅한다.
또한, 모델과 뷰의 생명주기도 관리하며, 모델이나 뷰의 변경 통지를 받으면 이를 해석하여 각각의 구성 요소에 해당 내용에 대해 알려준다.
애플리케이션이 복잡해질수록 모델과 뷰의 관계가 복잡해진다.
C가 P(프레젠터)로 교체된 패턴. V와 P는 1 : 1 관계이므로 MVC 패턴보다 더 강한 결합을 지닌 패턴이다.
MVC의 C가 VM(뷰모델)로 바뀐 패턴. VM은 뷰를 추상화한 계층이며 VM : V = 1 : N 이라는 관계를 갖는다.
VM은 커맨드와 데이터바인딩을 가진다.
MVVM 패턴을 가진 대표적인 프레임워크로는 뷰(Vue.js)가 있다.
참고
인프런 강의 _ CS 지식의 정석 | 디자인패턴 네트워크 운영체제 데이터베이스 자료구조대시보드
MDN Web Docs