MVC 패턴 : 유저가 컨트롤러에게 요청 -> 모델이 비즈니스 로직 수행 -> 컨트롤러가 받아서 뷰를 선택하여 화면 출력
모델 : 데이터와 행동을 갖는 객체, 비즈니스 로직 수행(상태 변화 처리, 반환)
뷰 : 데이터를 시각화, 모델이 처리한 데이터를 컨트롤러로 부터 받아서 사용(데이터나 로직x)
컨트롤러 : 사용자의 요청을 해석하여 처리하고 결과를 반환
--> 유일하게 다른 컴포넌트들의 존재를 알고 있는 컴포넌트(데이터의 흐름 제어)
--> 모델과 뷰를 느슨하게 연결
사용 이유
1) 구성요소들의 재사용
2) 확장성 증가
ex) 콘솔 프로그램 -> 웹 구현 시 모델은 그대로 사용
3) 중복 코딩 제거
4) 각 요소들에 집중
ex) 모델 비즈니스 로직 변경 -> 모델만 수정 / 뷰 변경 -> 뷰 내용만 변경.