MVC 패턴이란?

2024. 12. 19. 18:18·Spring

MVC 패턴(Model-View-Controller)은 소프트웨어 아키텍처 패턴 중 하나로, 애플리케이션을 모델(Model), 뷰(View), 컨트롤러(Controller) 세 가지 역할로 나눠서 구성하는 방식입니다. 이 패턴은 코드의 재사용성, 유지보수성, 확장성을 높이는 데 유용하며, 특히 웹 애플리케이션 개발에서 널리 사용됩니다.

MVC 패턴의 구성 요소와 역할

1. Model (모델)

  • 애플리케이션의 핵심 데이터와 비즈니스 로직을 담당합니다.
  • 데이터베이스와 상호작용하여 데이터를 가져오거나 저장합니다.
  • 상태를 저장하고 관리하며, 변경 사항을 알릴 수 있습니다.

역할:

  • 데이터를 정의하고 관리 (예: 객체, 데이터베이스 레코드).
  • 비즈니스 로직 실행.
  • 뷰나 컨트롤러가 요청한 데이터를 제공합니다.

2. View (뷰)

  • 사용자에게 데이터를 표시하는 **UI(User Interface)**를 담당합니다.
  • 화면에 모델 데이터를 렌더링하며, 사용자의 입력을 컨트롤러로 전달합니다.

역할:

  • 모델에서 받은 데이터를 기반으로 UI 생성.
  • 데이터 표시 방식만 담당하며, 로직을 포함하지 않습니다.

3. Controller (컨트롤러)

  • 사용자의 요청을 받아 이를 처리하고, 적절한 모델과 뷰를 연결합니다.
  • 모델을 업데이트하거나 필요한 데이터를 가져와 뷰에 전달합니다.

역할:

  • 사용자 입력 처리.
  • 모델과 뷰 간의 중재 역할.
  • 애플리케이션의 흐름 제어.

MVC의 흐름

다음은 MVC 패턴의 일반적인 동작 흐름입니다:

  1. 사용자가 View를 통해 입력을 합니다.
  2. 입력이 Controller로 전달됩니다.
  3. Controller는 비즈니스 로직이 필요하면 Model을 호출합니다.
  4. Model이 데이터를 처리한 뒤 Controller에 반환합니다.
  5. Controller는 View에 데이터를 전달하여 화면에 출력합니다.

MVC의 장점

  1. 역할 분리 (Separation of Concerns):
    • 비즈니스 로직(Model)과 UI(View)가 독립적으로 관리되므로 수정 및 확장이 용이합니다.
  2. 재사용성 (Reusability):
    • View는 다양한 형태로 재사용될 수 있으며, Model은 여러 View에서 공유 가능합니다.
  3. 유지보수성 (Maintainability):
    • 각 구성 요소가 독립적이므로 코드의 변경이 다른 부분에 미치는 영향을 최소화합니다.
  4. 테스트 용이성:
    • Model과 Controller는 UI(View)와 독립적이므로 단위 테스트가 쉽습니다.

MVC의 단점

  1. 초기 설계 복잡성:
    • MVC 구조를 도입하면 초기 설계와 구현 단계에서 구조화 작업이 복잡해질 수 있습니다.
  2. 과도한 의존성:
    • 구성 요소 간 의존성을 잘못 설계하면 유지보수가 어려워질 수 있습니다.
  3. 소규모 프로젝트 부적합:
    • 단순한 애플리케이션에는 오히려 불필요한 복잡성을 초래할 수 있습니다.

MVC의 실제 활용

웹 애플리케이션

  • Java의 Spring Framework: Model에 데이터 처리 로직, Controller에 비즈니스 로직, View에 JSP/Thymeleaf 사용.
  • Python의 Django: 모델에 ORM, 뷰에 템플릿 엔진 사용.
  • JavaScript의 Express.js: 컨트롤러와 라우팅을 주로 담당.

데스크톱 애플리케이션

  • Java의 Swing 또는 JavaFX: 모델-뷰 간의 이벤트 기반 상호작용.

MVC 패턴의 현대적 확장

  1. MVVM (Model-View-ViewModel):
    • 주로 프론트엔드 프레임워크(예: Angular, Vue.js)에서 사용.
    • ViewModel이 View와 Model 간 데이터 바인딩을 담당.
  2. MVP (Model-View-Presenter):
    • 프리젠터(Presenter)가 View와 Model 간의 연결을 완전히 분리.
    • Android 개발에서 한때 많이 사용.

참고

MVC - MDN Web Docs 용어 사전: 웹 용어 정의 | MDN

'Spring' 카테고리의 다른 글

답글이 있는 게시판 만들기  (1) 2024.12.20
JSP로 페이징 구현하기  (1) 2024.12.20
Spring Web MVC - Http 요청  (0) 2024.12.19
Spring Boot Web 프로젝트에서 JSP 적용하기  (0) 2024.12.19
Spring Web - Controller와 RestController  (0) 2024.12.18
'Spring' 카테고리의 다른 글
  • 답글이 있는 게시판 만들기
  • JSP로 페이징 구현하기
  • Spring Web MVC - Http 요청
  • Spring Boot Web 프로젝트에서 JSP 적용하기
jhyngu
jhyngu
취업하자.
    티스토리 홈
    |
  • jhyngu
    jhyngu
    jhyngu
  • 글쓰기 관리
  • 전체
    오늘
    어제
    • Dev (151)
      • Java (2)
      • Spring (51)
      • Spring Security (39)
        • JWT (22)
        • OAuth2 (17)
      • Kotlin (2)
      • React (6)
      • Coding Test (28)
      • DB (0)
      • Git (5)
      • Linux (14)
      • docker (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    JDBC
    spring web
    mybatis
    oauth2
    백준
    git
    JavaScript
    Spring Framework
    Linux
    알고리즘
    api client
    Spring Security
    MVC
    MariaDB
    Postman
    Spring
    JWT
    OAuth2
    react
    Spring Boot
  • hELLO· Designed By정상우.v4.10.3
jhyngu
MVC 패턴이란?
상단으로

티스토리툴바