💡MVC 패턴이란
MVC는 소프트웨어를 Model, View, Controller라는 3가지 구성 요소로 구분한 개발 방법론으로 사용자 인터페이스, 데이터 및 논리 제어를 구현하기 위해 사용되는 디자인 패턴이다.
소프트웨어의 비즈니스 로직과 화면을 구분하는데 중점을 두며 이를 통해 더 나은 업무의 분리와 향상된 관리를 제공한다. MVC 웹 프레임워크를 사용하는 대표적인 프레임워크는 스프링, 장고 등이 있다.
💡Model
Model은 소프트웨어나 애플리케이션에서 정보 및 데이터 부분을 의미한다. 이는 Controller에게 받은 데이터를 가공하는 역할을 수행한다고 볼 수 있다.
💡View
View는 입력값이나 체크박스 등과 같은 사용자 인터페이스 요소를 나타낸다. 이는 Controller에게 받은 Model의 데이터를 사용자에게 시각적으로 보여주기 위한 역할을 수행한다.
💡Controller
Controller는 Model과 View 사이에서 데이터 흐름을 제어한다. 사용자가 접근한 URL에 따라 요청을 파악하고 URL에 적절한 Method를 호출하여 Service에서 비즈니스 로직을 처리한다. 이후 결과를 Model에 저장하여 View에게 전달하는 역할을 하며 Model과 View 사이에서 역할 분리를 수행한다.
💡Model, View, Controller의 관계
- 사용자의 Request를 Controller가 받는다.
- Controller는 Service에서 비즈니스 로직을 처리한 후 결과를 Model에 담는다.
- Model에 저장된 결과를 바탕으로 시각적 요소 출력을 담당하는 View를 제어하여 사용자에게 전달한다.
💡MVC 규칙을 지키면서 코딩하는 방법
- 모델은 컨트롤러나 뷰에 의존하면 안된다➡모델 내부에 컨트롤러 및 뷰와 관련된 코드가 있으면 안된다
- 뷰는 모델에만 의존해야 하고, 컨트롤러에는 의존하면 안된다➡뷰 내부에는 모델의 코드만 있을 수 있고 컨트롤러의 코드가 있으면 안된다
- 뷰가 모델로부터 데이터를 맏을 때는 사용자마다 다르게 보여주어야 하는 데이터에 한해서만 받아야 한다
- 컨트롤러는 모델과 뷰에 의존해도 된다➡컨트롤러 내부에는 모델과 뷰의 코드가 있을 수 있다
- 뷰가 모델로부터 데이터를 받을 때는 반드시 컨트롤러에서 받아야 한다
참고
'개념 스터디' 카테고리의 다른 글
엔티티 매니저? 영속성 컨텍스트? (0) | 2024.01.21 |
---|---|
JPA? ORM? 하이버네이트? (0) | 2024.01.21 |
REST API (0) | 2024.01.15 |
레이어드 아키텍처 (0) | 2024.01.14 |
관점 지향 프로그래밍(Aspect Oriented Programming, AOP) (1) | 2024.01.14 |