MVC(Model-View-Controller)
- MVC는 Model, View, Controller 애플리케이션 3가지의 역할로 구분한 개발방법론이다.
- 사용자는 원하는 기능을 처리하기 위한 모든 요청을 컨트롤러에 보낸다.
- 컨트롤러는 모델을 사용하고, 모델은 알맞은 비즈니스 로직을 수행한다.
- 컨트롤러는 사용자에게 보여줄 뷰를 선택한다.
- 선택된 뷰는 사용자에게 알맞는 결과를 보여준다. 이 때 사용자에게 보여줄 데이터는 컨트롤러를 통해서 전달받는다.
MVC 규칙
- Model은 Controller와 View에 의존하지 않아야 한다.(Model 내부에 Cotroller와 View에 관련된 코드가 있으면 안된다.)
- View는 Model에만 의존해야하고, Controller에는 의존하면 안된다.
- View가 Model로부터 데이터를 받을 때는, 사용자마다 다르게 보여주어야 하는 데이터에 대해서만 받아야 한다.
- Controller는 Model과 View에 의존해도 된다. (Controller 내부에는 Model과 View의 코드가 있을 수 있다.)
- View가 Model로부터 데이터를 받을 때, 반드시 Controller에서 받아야 한다.
MVC 패턴의 장점
- 여러 개발자가 역할을 나눠서 모델, 컨트롤러, 뷰를 동시에 개발할 수 있다.
ex) Java개발자가 Model과 Controller를 개발하고, UI 개발자가 View부분을 담당하여 개발할 수 있다.
- 중복코드를 없앨 수 있고, 확장성있고 유연한 코딩이 가능하다.
ex) Java코드로 로직을 설계한 것이 웹으로 배포할 내용과, 앱으로 배포할 내용이 있다면 View 부분만 바꿔서 코딩할 수 있다.
- 각 컴포넌트별로 나눠져 있어 디버깅과 테스트가 용이하다.
MVC 패턴의 단점
- View와 Model 사이의 의존성이 높아 규모가 커질수록 파일이 많아져 복잡해질 수 있다.
하나의 새로운 기능을 구현하려면 Model, View, Controller를 각각 따로 만들어서 너무 많은 파일이 생성될 수 있다.