모델-뷰-컨트롤러(model–view–controller, MVC)는 소프트웨어 공학에서 사용되는 소프트웨어 디자인 패턴이다. 이 패턴을 성공적으로 사용하면, 사용자 인터페이스로부터 비즈니스 로직을 분리하여 애플리케이션의 시각적 요소나 그 이면에서 실행되는 비즈니스 로직을 서로 영향 없이 쉽게 고칠 수 있는 애플리케이션을 만들 수 있다.
MVC에서 모델은 애플리케이션의 정보(데이터)를 나타내며, 뷰는 텍스트, 체크박스 항목 등과 같은 사용자 인터페이스 요소를 나타내고, 컨트롤러는 데이터와 비즈니스 로직 사이의 상호동작을 관리한다.
위의 그림처럼 사용자가 controller를 조작하면 controller는 model을 통해서 데이터를 가져오고 그 정보를 바탕으로 시각적인 표현을 담당하는 View를 제어해서 사용자에게 전달하게 된다.
MVC 에 기반을 둔 몇 가지 다른 디자인 패턴으로 MVVM (모델-뷰-뷰모델), MVP (모델-뷰-프리젠터), MVW (모델-뷰-왓에버) 가 있다.
Model
Model 의 규칙
- 사용자가 편집하기를 원하는 모든 데이터를 가지고 있어야 한다
- View나 Controller에 대헤서 어떤 정보도 알지 말아야 한다
- 변경이 일어나면, 변경 통지에 대한 처리방법을 구현해야만 한다
View
View 의 규칙
- Model이 가지고 있는 정보를 따로 저장해서는 안된다
- Model이나 Controller와 같이 다른 구성요소들을 몰라야 한다
- 변경이 일어나면 변경 통지에 대한 처리방법을 구현해야만 한다
- Model과 View는 서로의 존재를 몰라야 한다
Controller
Controller 의 규칙
- Model이나 View에 대해서 알고 있어야 한다
- Model이나 View의 변경을 모니터링 해야 한다
참고 링크
https://velog.io/@seongwon97/MVC-%ED%8C%A8%ED%84%B4%EC%9D%B4%EB%9E%80
https://developer.mozilla.org/ko/docs/Glossary/MVC
https://m.blog.naver.com/jhc9639/220967034588