
안녕하세요. 이번시간에는 MVC라는 패턴에 대해 알아볼까 해요.
MVC 패턴이란?
사용자가 인터페이스를 설계하는 소프트웨어 디자인 패턴 중 하나로
Model(모델), View(뷰), Controller(컨트롤러) 구성요소를 가지고 있어요.
세 가지의 구성 요소의 역할분담으로 개발 진행하는데 하나하나 알아가 볼까요?
Model
Model(모델)은 데이터와 비즈니스 로직을 담당하고 있어요.
데이터베이스와 연동, 데이터 처리 등을 수행하고,
상태 변경에 대한 View와 Controller에게 알릴 수 있는 메커니즘을 제공하고 있습니다.
View와 Controller의 세부 구현사항으로 독립적으로 실행 단 직접 UI를 다루지 않는 점이 특징이에요.
View
View(뷰)는 사용자에게 데이터를 표시하는 방법을 정의함으로
Model의 정보를 표시, 사용자 액션을 Controller에게 전달해 줘요.
그리고 Model이 가진 정보를 사용자가 이해할 수 있는 형태로 변환해 주는 친구입니다.
Controller
마지막으로 Controller(컨트롤러)는 사용자의 입력을 처리,
Model과 View 사이의 상호작용을 관리하는데요.
사용자의 입력에 반등하여 Model을 업데이트하고,
필요한 경우 View를 새롭게 출력해 주는 연결체 역할을 맡고 있어요.
MVC의 장점
각 구성요소가 독립적인 기능을 책임으로 각자 역할 분담을 가지고 있어요.
그래서 사용자의 인터페이스(User Interface)
'코드 관리와 유지보수가 쉽다!'는 장점이 있답니다.
MVC의 단점
MVC는 독립적인 구조로 인해 초기 설정이 복잡하다는 단점이 존재합니다.
그리고 프로젝트 작업 중 과한 설계로 시각적으로 불편할 수 있다는 점도 있어요.
MVC의 작동원리
MVC의 작동원리는
View -> Controller -> Model -> Controller -> View 순서예요.
// 1. Model 생성
class LunchMenu {
private String menu;
public String getMenu() { return menu; }
public void setMenu(String menu) { this.menu = menu; }
}
// 2. View: 데이터를 보여주는 역할
class LunchView {
public void displayMenu(String menu) {
if (menu == null || menu.isBlank()) {
System.out.println("오늘은 급식이 없습니다.");
} else {
System.out.println("오늘 급식 메뉴는: " + menu);
}
}
}
// 3. Controller: Model과 View를 연결하는 역할
class LunchController {
private LunchMenu model;
private LunchView view;
public LunchController(LunchMenu model, LunchView view) {
this.model = model;
this. view = view;
}
public void setLunchMenu(String menu) {
model.setMenu(menu);
}
public void updateView() {
String menu = model.getMenu();
view.displayMenu(menu);
}
public void studentRequestMenu() {
System.out.println("[학생 요청] 오늘 급식 뭐에요?");
}
}
위의 학생 급식 시스템이라는 예시를 가지고 설명을 드리자면
학생(사용자) >> View(화면 클릭) >> Controller(영양사) >> Model(급식표) 조회
>> Controller가 View에 전달 >> View가 화면 출력 순서가 될 거예요.

여기까지 MVC 패턴에 대해 알아봤는데요.
MVC를 보면 익숙한 클래스와 객체들이 보이는데요.
조금만 복습하신다면 MVC 패턴이 훨씬 더 익숙하게 느껴질 거예요.
'Backend > Java' 카테고리의 다른 글
| Java의 기초 테스트 1편 - 코딩 (4) | 2025.07.21 |
|---|---|
| Lombok 설정 방법 (4) | 2025.07.17 |
| OOP-SOLID 원칙 (6) | 2025.07.14 |
| 예외 처리(Exception Handling) try, catch, finally (5) | 2025.07.12 |
| this vs super vs final (0) | 2025.07.12 |