MVC패턴이란?
MDN Web Docs에 정리 된 내용으로는, MVC(모델-뷰-컨트롤러)는 사용자 인터페이스, 데이터 및 논리 제어를 구현하는데 널리 사용되는 소프트웨어 디자인 패턴입니다. 소프트웨어의 비즈니스 로직과 화면을 구분하는데 중점을 두고 있습니다. 이러한 "관심사 분리" 는 더 나은 업무의 분리와 향상된 관리를 제공합니다. MVC에 기반을 둔 몇 가지 다른 디자인 패턴으로 MVVM(모델-뷰-뷰모델), MVP(모델-뷰-프리젠터), MVW(모델-뷰-왓에버)가 있습니다.
그러면 Model, View, Controller 역할과 규칙에 대해 알아보자.
- Model의 역할은 Controller에게 요청을 받아 비지니스 로직을 처리한다.
- 비즈니스 로직과 데이터 처리 전담: Model은 데이터와 비즈니스 로직을 처리하고, 그 외의 역할을 하지 않습니다.
- 상태 저장 및 변경 관리: 애플리케이션의 상태(데이터)는 Model에서만 관리합니다.
- 뷰와 컨트롤러에 의존하지 않음: Model은 다른 요소에 대해 알 필요가 없습니다.
- 데이터베이스와 상호작용을 캡슐화: 데이터베이스와 직접 상호작용하는 세부 사항은 Model 안에 숨겨져야 합니다.
- View의 역할은 Model에서 처리한 비즈니스 로직 처리한 것을 받아 화면에 보여준다.
- 비즈니스 로직 포함 금지: View는 비즈니스 로직을 처리하지 않고, 데이터를 표현하는 데 집중해야 합니다.
- 모델의 상태를 직접 변경하지 않음: View는 데이터만 표현하며, 상태 변경은 Controller와 Model의 역할입니다.
- 컨트롤러와 협력: View는 사용자 입력을 Controller에 전달하고, Model에서 받은 데이터를 UI로 렌더링합니다.
- Controller의 역할은 사용자의 요청을 Model과 Controller에게 요청을 한다.
- 모델과 뷰를 조율: Controller는 Model에서 비즈니스 로직을 처리하게 하고, 그 결과를 View에 전달합니다.
- 비즈니스 로직 포함 금지: Controller는 비즈니스 로직을 모델에 위임하며, 요청을 전달하고 결과를 조율하는 역할만 수행합니다.
- 입력 데이터의 검증: Controller는 사용자 입력 데이터를 검증하고, 유효한 데이터만 모델에 전달해야 합니다.
예시를 보여주면,
흐름을 글로 정리했을 때,
- 사용자가 웹 브라우저를 통해 요청을 보내면 Controller가 수신을 한다.
- Controller는 요청을 분석하여, 비즈니스 로직을 Model에게 요청을 한다.
- Model은 데이터베이스와 비즈니스 로직을 처리한 후, Controller에게 다시 전송한다.
- Controller는 View에게 전송한다.
- View는 사용자가 요청한 결과를 웹 브라우저에 렌더링 하게 된다.
만약, MVC 패턴을 쓰게 된다면 주의할 사항으로는?
- Controller에 많은 로직이 들어가게 된다면, Controller가 비대해질 뿐더러, 코드가 복잡해지기 질 수 있다. 그러므로, Controller는 사용자의 요청을 받고 비즈니스 로직은 Model에게 넘겨주는 역할만 준다.
- Model이 View에 의존하게 되면, 데이터와 UI 간의 결합도가 높아져서 확장성과 유지보수가 어려워질 수 있습니다.
개인적인 생각으로는 너무 많은 것을 요청하지 않고, 각자의 할 일만 할 수 있게 코드를 설계하는 것이 좋은 것 같다.
'Spring' 카테고리의 다른 글
[Spring] JSP/Servlet (0) | 2024.10.08 |
---|---|
[Spring] (1) | 2024.09.30 |