소프트웨어를 설계할 때(웹,앱) 사용 가능한 검증된 설계 방식이며,
파이프 필터 패턴 등의 여러 종류가 있다.
MVC는 디자인 패턴 중의 하나이다.
하나의 어플리케이션을 모델, 뷰, 컨트롤러 3개의 시스템으로 나누어 설계하는 패턴을 말한다.
모델은 데이터베이스와 직접 상호작용을 하여, 클라이언트가 원하는 데이터를 쿼리하여 전달해주거나, 또는 변경사항을 데이터에 반영하는 역할을 한다.
뷰는 실제 사용자가 보는 UI를 설계한 파일이다. HTML, CSS가 대표적이다.
뷰는 컨트롤러에 의하여 브라우저에 화면을 그려내는 역할을 한다. (컨트롤러하고만 소통함)
컨트롤러는 사용자가 주는 입력, 이벤트 정보를 가공하여, 모델에게 전달하는 역할을 한다.
조금 쉽게 설명하자면, 사용자가 12월에 볼 수 있는 영화 목록을 조회할 경우, 컨트롤러는 이 정보를 받아서 가공하여 모델에게 전달하고, 모델은 DB에 쿼리문을 날려서 필터된 데이터를 받아서 다시 컨트롤러에게 준다.
이후 컨트롤러는 전달받은 데이터를 뷰에게 주어서, 클라이언트의 요청 사항이 뷰에 반영될 수 있도록 한다.
이 과정을 그림으로 도식화하면 아래와 같다.
MVC 패턴의 단점: View와 Model 사이의 의존성이 높다는 점. View와 Model의 높은 의존성은 어플리케이션이 커질수록 복잡해지고 유지보수가 어려워집니다.