☢️ MVC 패턴

2025. 9. 16. 14:30·Computer Science/Design Pattern

MVC 패턴은 모델(Model), 뷰(View), 컨트롤러(Controller)로 이루어진 디자인 패턴입니다.

 

애플리케이션의 구성 요소를 세 가지 역할로 구분하여 개발 프로세스에서 각각의 구성요소에만 집중해서 개발할 수 있습니다. 재사용성과 확장성이 용이하다는 장점이 있고, 애플리케이션이 복잡해질수록 모델과 뷰의 관계가 복잡해지는 단점이 있습니다.

 

1. 모델(model) - 핵심 데이터와 그 데이터를 처리하는 규칙

모델은 애플리케이션의 데이터인 데이터베이스, 상수, 변수를 뜻합니다. 사각형 모양의 박스 안에 글자가 들어 있다면 그 사각형 모양의 박스 위치 정보, 글자 내용, 글자 위치, 글자 포멧에 관한 정보를 모두 가지고 있어야 합니다. 뷰에서 데이터를 생성하거나 수정하면 컨트롤러를 통해 모델을 생성하거나 갱신합니다.

 

2. 뷰(view) - 보여지는 화면

뷰는 inputbox, checkbox, textarea 등 사용자 인터페이스 요소를 나타냅니다. 모델을 기반으로 사용자가 볼 수 있는 화면을 뜻합니다. 모델이 가지고 있는 정보를 따로 저장하지 않아야 하며 단순히 사각형 모양 등 화면에 표시하는 정보만 가지고 있어야 합니다. 또한, 변경이 일어나면 컨트롤러에 이를 전달해야 합니다.

 

3. 컨트롤러(controller) - 메인 로직과 흐름 제어

컨트롤러는 하나 이상의 모델과 하나 이상의 뷰를 잇는 다리 역할을 하며 이벤트 등 메인 로직을 담당합니다. 또한, 모델과 뷰의 생명주기도 관리하며, 모델이나 뷰의 변경 통지를 받으면 이를 해석하여 각각의 구성 요소에 해당 내용에 대해 알려줍니다.

 


🟩 MVC 패턴의 예 리액트

MVC 패턴을 이용한 대표적인 프레임워크로는 자바 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크인 스프링이 있습니다. Spring의 WEB MVC는 웹 서비스를 구축하는데 편리한 기능들을 많이 제공합니다. 

  • 요청 분석: 웨이터가 손님의 주문을 정확히 알아듣는 것처럼, 사용자가 보낸 요청이 어떤 내용인지(@RequestParam 등) 쉽게 파악할 수 있습니다.
  • 유효성 검사: 손님이 메뉴에 없는 음식을 주문할 때 "그런 메뉴는 없습니다"라고 알려주는 것처럼, 사용자가 숫자를 입력해야 할 곳에 문자를 입력하는 등의 잘못된 요청을 쉽게 걸러낼 수 있습니다.
  • 재사용성: 잘 만들어진 웨이터(컨트롤러)는 어떤 테이블(뷰)의 주문도 받을 수 있듯이, 코드를 여러 곳에서 재사용하기 좋습니다.

1. MVC, MVP, MVVM 패턴의 차이점은 무엇인가요?

 

세 가지 패턴은 모두 애플리케이션의 관심사를 분리하여 유지보수성과 테스트 용이성을 높인다는 공통된 목표를 가지고 있지만, 컴포넌트 간의 상호작용 방식과 결합도에서 명확한 차이를 보입니다. MVC는 컨트롤러가 중심이며, 뷰가 모델을 직접 참조합니다. 가장 단순하지만 뷰와 모델의 의존성이 높습니다. MVP는 프레젠터가 뷰와 모델을 완벽히 중개하여 둘의 의존성을 완전히 제거합니다. 대신 뷰와 프레젠터의 1:1 결합이 강해집니다. MVVM은 뷰모델과 데이터 바인딩이 핵심입니다. 데이터 바인딩이 뷰와 뷰모델을 자동으로 동기화해주기 때문에 UI 로직과 상태 관리가 매우 효율적입니다.

 

2. MVC 패턴은 무엇인가요?

 

MVC 패턴은 애플리케이션을 모델, 뷰, 컨트롤러라는 세 가지의 독립된 역할로 구분하는 디자인 패턴입니다. 모델은 데이터와 핵심 비즈니스 로직을 담당하고, 뷰는 사용자에게 보이는 UI 화면을 처리하며, 컨트롤러는 사용자의 입력을 받아 모델과 뷰 사이의 흐름을 제어하는 역할을 합니다. 이렇게 역할을 명확히 분리하면 각 구성요소에만 집중하여 독립적으로 개발할 수 있어 코드의 재사용성과 확장성이 높아진다는 장점이 있습니다. 다만, 애플리케이션의 규모가 커질수록 모델과 뷰의 관계가 복잡해질 수 있다는 단점도 있습니다.

'Computer Science > Design Pattern' 카테고리의 다른 글

♈️ MVVM 패턴  (0) 2025.09.16
🅿️ MVP 패턴  (0) 2025.09.16
📺 노출모듈 패턴  (0) 2025.09.16
🔁 이터레이터 패턴  (0) 2025.09.16
⛓️ 프록시 패턴과 프록시 서버  (1) 2025.09.16
'Computer Science/Design Pattern' 카테고리의 다른 글
  • ♈️ MVVM 패턴
  • 🅿️ MVP 패턴
  • 📺 노출모듈 패턴
  • 🔁 이터레이터 패턴
TECHNING
TECHNING
Hi! I'm techning
  • TECHNING
    TECHNING
    TECHNING
    • 분류 전체보기 (54)
      • Computer Science (45)
        • Design Pattern (11)
        • Programming Paradigm (4)
        • Network (15)
        • Operating System (6)
        • Database (6)
        • Data Structure (3)
      • Algorithm (5)
        • Python (3)
        • Java (1)
      • IT Insight (4)
  • hELLO· Designed By정상우.v4.10.4
TECHNING
☢️ MVC 패턴
상단으로

티스토리툴바