MVC 패턴

김유진·2026년 2월 10일

디자인패턴

목록 보기
1/1
post-thumbnail

개요

Model - View - Controller
관심사의 분리 Separation of Concerns, SoC가 주된 목적
즉, 각 객체가 자기가 잘하는 일에 집중하게 해서 코드의 재사용성과 유지보수성을 높임

  • Model: 비즈니스 로직 및 데이터 처리 담당
  • View: 모델이 처리한 결과 데이터의 화면 생성 담당 ex) JSP
  • Controller: 요청 처리 및 흐름 제어 담당

Model

시스템의 비즈니스 데이터와 그 데이터를 처리하는 규칙을 정의한 컴포넌트

App의 상태 Data와 비즈니스 로직 Logic을 관리하는 부분

주요 특징

  • 비즈니스 로직을 다루므로 '실질적인 일'을 하는 부분이라고 할 수 있다!
  • 독립성 : View, Controller에 대한 정보를 전혀 몰라야 함 (코드 내에 UI 관련 라이브러리, 컨트롤러 객체 등이 들어가면 안됨!)
  • 상태 저장 : DB와 연동되어 데이터를 CRUD함
  • Service, Repository 계층을 포함한다!

View

모델이 보유한 데이터를 시각적으로 표현하여 사용자에게 출력하는 컴포넌트

사용자에게 보여지는 결과물을 생성하는 부분

주요 특징

  • 수동성 : 데이터를 저장하거나 처리하는게 아니라 그냥 전달받은 데이터를 화면에 그리는 역할만 함
  • 로직 최소화 : 출력 로직만 포함되어야 하며, 비즈니스 로직은 포함되지 않음!
  • 독립성 : 모델의 구현은 몰라도 상관 없음. 그냥 전달받은 데이터를 잘 그려내기만 하면 된다!

Controller

사용자의 요청을 해석하여 적절한 모델 서비스를 호출하고 그 결과에 맞는 뷰를 선택해 응답을 제어하는 컴포넌트

사용자의 입력 Request를 받아 Model과 View를 연결하는 중개자

주요 특징

  • 흐름 제어 : 전체적인 애플리케이션의 워크플로우를 결정함
  • 가교 : 모델로부터 데이터를 전달받아 뷰로 넘겨주거나, 사용자의 입력을 모델이 이해하도록 변환함. 즉, Client, Model, View의 가교 역할을 한다
  • 비즈니스 로직 배제 : 직접적인 비즈니스 로직을 포함하지 않음 그저 모델에게 일을 잘 시키는데 집중함

MVC 패턴의 장점

1. 유지보수성이 좋음

  • 디자인을 바꿀땐 View만 고치면 되고, 비즈니스 로직을 수정할땐 Model만 고치면 됨
  • 즉, 서로 간섭 없이 유지보수할 수 있다!

2. 확장성

  • 하나의 모델에 여러 뷰를 붙일 수 있음
  • 웹이나, 모바일 등

3. 테스트 용이성

  • 화면 없이 백엔드 로직만 떼어내서 유닛 테스트 하는데 용이함

참조

profile
제가 공부한 내용을 적은 것이기 때문에 틀릴 수 있습니다.

0개의 댓글