📌MVC 패턴이란?
- "Model-View-Controller"의 약어
- 소프트웨어 개발에서 사용되는 디자인 패턴
- 사용자 interface로 부터 비즈니스 로직을 분리 👉🏼 시각적 요소와 비즈니스 로직을 서로 영향 없이 수정 가능
✏️Model, View, Controller
✔️Model
- 데이터와 비즈니스 로직을 포함하는 부분
- 데이터의 상태가 변경되면 일반적으로 뷰에게 알림(상황에 따라 컨트롤러에게 알리기도 함)
✔️View
- 사용자 interface
- 표시할 데이터를 모델로 부터 받아 화면에 표시
- 사용자의 입력을 받아 컨트롤러에 전달
✔️Controller
- 모델과 뷰 간의 상호 동작을 관리(데이터의 흐름 제어)
- 사용자의 입력을 받아 해당 입력에 따른 모델,뷰 데이터의 업데이트를 수행
👍🏼장점
- 코드의 분리로 가독성과 유지보수성이 향상됨
- 모델,뷰, 컨트롤러를 병렬 개발이 가능하기 때문에 협업에 도움
👎🏼단점
- 모델,뷰의 완벽한 분리가 어렵다(패턴이 모호해질 가능성 有)
- 컨트롤러에 다수의 모델과 뷰가 복잡하게 연결될수 있음(복잡한 대규모 프로젝트 적용 어려움)
- 모델,뷰,컨트롤러간의 상호작용과 데이터 흐름을 관리하는것은 추가적인 이해가 필요
👀MVC1 vs MVC2
✔️MVC1
- MVC 1은 초기에 Java 웹 애플리케이션 개발에 사용되던 아키텍처
- Jsp가 뷰와 컨트롤러의 역할 모두 수행
- Jsp에 Java,Html,Css등의 코드가 섞여 코드가 복잡
- 개발 단순성 ▲, 코드의 가독성, 유지보수성 ▼
✔️MVC2
- Jsp,Servlet을 이용하여 개발
- 모델, 뷰, 컨트롤러의 역할을 명확하게 분리
- Servlet은 컨트롤러 역할을 수행하여 클라이언트의 요청을 처리하고, 모델과 상호작용
- Jsp는 뷰 역할을 담당하여 HTML,CSS등의 코드 포함
- 개발의 구조화, 유지보수성과 재사용성 향상
- 대표적인 MVC2 아키텍처를 구현한 프레임 워크로 Spring MVC가 있다
'💻 It' 카테고리의 다른 글
Thread(쓰레드)란? (0) | 2023.09.10 |
---|---|
레거시 코드(Legacy Code)란? (0) | 2023.09.04 |
[NETWORK] HTTP란? (1) | 2023.08.24 |
REST, REST API, RESTful이란? (0) | 2023.08.22 |
OAuth2 란? (0) | 2023.07.27 |