MVC 패턴이란 무엇인가?

임지원·2024년 4월 24일

MVC 패턴이란 디자인 패턴의 한 종류이다.

디자인 패턴이란

객체 지향 프로그래밍을 설계할때 일어나는 문제들을 해결하기 위해 사용되는 패턴이다.
나중에 유지보수하기 쉽고 좀 더 쉽고 편리하게 사용할 수 있게 각 기능별로 클래스를 만들어 놓은 의사소통의 수단이다.

MVC란

Model, View, Controller의 약자로
하나의 어플리케이션을 구성할 때 구성 요소를 세가지 역할로 구분한 패턴이다.

Model
정보, Data의 가공을 책임지는 컴포넌트
규칙
1. 사용자가 편집하길 원하는 모든 데이터를 가지고 있어야한다.
2. 뷰나 컨트롤러에 대해서 어떤 정보도 알지 말아야 한다.
3. 변경이 일어나면, 변경 통지에 대한 처리방법을 구현해야 한다.

View
사용자 인터페이스 요소를 나타낸다. 데이터를 기반으로 사용자에게 보여 주는 화면을 말한다.
규칙
1. 모델이 가지고 있는 정보를 따로 저장해서는 안된다.
2. 모델이나 컨트롤러와 같이 다른 구성요소들을 몰라야 한다.
3. 변경이 일어나면 변경통지에 대한 처리방법을 구현해야 한다.

Controller
데이터와 인터페이스를 잇는 다리역할로 이벤트 처리를 담당한다.
모델과 뷰는 서로 모르기 때문에 사용자가 필요한 데이터를 모델에게 요청하고 가공된 값을 뷰에게 전달하여 화면을 구성하기 위한 역할로 컨트롤러가 존재한다.
규칙
1. 모델이나 뷰에 대해서 알고 있어야 한다.
2. 모델이나 뷰의 변경을 모니터링 해야 한다.

MVC패턴을 사용하는 이유

시각적 페이지(view), 데이터처리(model)을 분리하고 이를 컨트롤하는(controller)기능을 두어 각자의 일에만 집중하게 하여 효율성을 높이기 위함이다.

분리의 효과
1. 코드의 유지보수가 편해진다.
2. 유연성 및 확장성이 증가한다.
3. 중복성을 제거한다.

한계

  1. 모델과 뷰의 의존성이 완벽히 분리될 수 없다.
    뷰가 모델의 변화에 적절히 반응하기 위해서는 뷰가 모델을 어느정도 "알고" 있어야 하기 때문에 분리가 어렵다.

  2. 어플리케이션이 커지면 컨트롤러의 코드량이 증가하여 유지보수가 어렵다.
    기능이 많아지면 다양한 모델과 뷰가 생길 수 있고 컨트롤러의 코드가 길어지며 부하가 생긴다.
    그러면 Massive-View-Controller(대규모 MVC 어플리케이션)문제가 발생할 수 있다.

profile
백엔드 새싹

0개의 댓글