MVC 패턴에 대해 설명해 주세요.
MVC 패턴 : Model-View-Controller 패턴
과거 MVC 패턴이 없던 시절에는 JSP를 사용하여 화면에 동적인 결과를 출력했다.
하지만 화면을 출력하기 위한 코드와 화면에 필요한 데이터를 가져오는 코드가 한 파일에 함께 존재해 유지보수가 매우 힘들었다.
이러한 문제를 해결하기 위해 나타난 것이 MVC 패턴이다.
MVC 패턴도 하나의 디자인 패턴이며, 애플리케이션을 3가지 역할로 구분한 개발방법론이다.

Model : 데이터와 관련된 부분
View : 사용자한테 보여지는 부분,
Model의 데이터를 사용한다.Controller : 클라이언트의 요청을 받고,
Model과View를 이어주는 중개자 역할
이렇게 각 역할을 명확하게 구분함으로써 유지보수와 확장성에 유연하게 대처할 수 있다.
MVC를 지키면서 코딩하는 방법
Model은Controller와View에 의존하지 않아야 한다.Model내부에Controller와View에 관련된 코드가 있으면 안 된다.
View는Model에만 의존해야 하고,Controller에는 의존하면 안 된다.View내부에는Model의 코드만 있을 수 있고,Controller의 코드가 있으면 안 된다.
View가Model로부터 데이터를 받을 때는, 사용자마다 다르게 보여주어야 하는 데이터에 대해서만 받아야 한다.View는 UI(레이아웃)와Model로부터 받은 데이터가 합쳐져 만들어진 화면이다.UI는 모든 사용자에게 공통으로 보여주는 화면이므로
View가 자체적으로 가지고 있고, 사용자 정보와 같은 사용자마다 다르게 보여줘야 하는 데이터만Model로부터 받아야 한다.
Controller는Model과View에 의존해도 된다.Controller의 핵심 역할은 모델 객체로의 데이터 흐름을 제어하여View와Model의 역할을 분리하는 것에 있다.때문에
Controller내부에는Model과View의 코드가 있을 수 있다.
View가Model로부터 데이터를 받을 때, 반드시Controller를 통해서 받아야 한다.Model로부터 직접 받으면 1번 규칙을 어기게 된다.
MVC 패턴 장점
기능별로 코드를 분리하여 가독성과 코드의 재사용성 증가
각 구성요소들을 독립시켜 분업을 가능하게 해주기 때문에 개발의 효율성을 높여준다.
개발 후에도 유지보수성과 확장성이 보장된다.
MVC패턴 한계
Model과View는 서로의 정보를 갖지 않는 독립적인 상태이지만,Controller라는 중간 매개체를 통해 연결이 이루어지기 때문에 의존성이 완전히 분리되었다고 할 수는 없다.복잡한 대규모 프로그램의 경우 많은
View와Model이Controller를 통해 연결되기 때문에 컨트롤러가 불필요하게 커지는 현상이 발생하는데, 이러한 현상을 Massive-View-Controller 현상이라고 한다.이를 보완하기 위해
MVP,MVVM등의 패턴들이 생겨났다.

참고
Last updated