공부해봅시당
[디자인 패턴] MVC 패턴 본문
이전에 이미 학습했던 내용이지만 CS 스터디를 위해 MVC 패턴에 대한 정리를 해보려고 함
MVC 패턴이란?
MVC는 model, view, controller의 약자로, 소프트웨어 공학에서 사용되는 소프트웨어 디자인 패턴
- model: 애플리케이션의 정보(데이터)
- view: 텍스트, 체크박스 항목 등과 같은 사용자 인터페이스 요소
- controller: 비즈니스 로직 사이의 상호동작 관리
패턴을 성공적으로 사용하면, 사용자 인터페이스로부터 비즈니스 로직을 분리하여 애플리케이션의 시각적 요소나 그 이면에서 실행되는 비즈니스 로직을 서로 영향 없이 쉽게 고칠 수 있는 애플리케이션을 만들 수 있음
핵심은 MVC 패턴을 사용하면 사용자 인터페이스로부터 비즈니스 로직을 분리하여 비즈니스 로직을 쉽게 고칠 수 있는 애플리케이션이 된다는 것
과거에는 View에 모든 비즈니스 로직까지 넣어 코드의 길이가 길어지고 유지보수가 힘들었음
최근에는 코드를 3가지 형태로 나누어 개발을 하는 MVC가 기본적인 디자인패턴이 되어 사용되고 있다고 함
Model, View, Controller
Model
- 역할
- Data와 애플리케이션이 무엇을 할 것인지를 정의
- 내부 비즈니스 로직을 처리하기 위한 역할
- 컨트롤러가 모델을 호출하면 DB와 연동하여 데이터(사용자 입출력 데이터 등) 와 연관된 비즈니스 로직을 처리하는 역할
- 데이터 추출, 저장, 삭제, 업데이트 등의 역할 수행
- 규칙
- 사용자가 편집하기를 원하는 모든 데이터를 가지고 있어야 함
- View나 Controller에 대해 어떤 정보도 알지 말아야 함
- 변경이 일어나면, 변경 통지에 대한 처리방법을 구현해야만 함
View
- 역할
- 사용자에게 보여주는 화면(UI)
- 사용자와 상호작용을 하며 컨트롤러로부터 받은 모델의 결과값을 사용자에게 화면으로 출력하는 역할
- MVC에서느 여러개의 View가 존재할 수 있음
- Model에서 받은 데이터는 별도로 저장하지 않음
- 규칙
- Model이 가지고 있는 정보를 따로 저장해서는 안됨
- Model이나 Controller와 같이 다른 구성요소들을 몰라야 함
- 변경이 일어나면 변경 통지에 대한 처리방법을 구현해야 함
Model과 View는 서로의 존재를 몰라야 함
Controller
- 역할
- Model과 View 사이를 이어주는 인터페이스 역할
- Model이 데이터를 어떻게 처리할지 알려주는 역할
- 사용자로부터 View에 요청이 있으면 Controller는 해당 업무를 수행하는 Model을 호출하고 Model이 업무를 모두 수행하면 다시 결과를 View에 전달하는 역할
- 규칙
- Model이나View에 대해 알고 있어야 함
- Model이나 View의 변경을 모니터링 해야 함
MVC 구동 원리
MVC패턴은 Spring프레임워크와 JSP를 사용하는 웹 애플리케이션 개발에 많이 사용되고 있음
<웹 애플리케이션에서의 MVC의 구동 원리>
- 웹 브라우저가 웹 서버에 웹 애플리케이션 실행을 요청 (MVC 구조가 WAS라고 보면 된다.)
- 웹 서버는 들어온 요청을 처리할 수 있는 서블릿을 찾아서 요청을 전달 (Matching)
- 서블릿은 모델 자바 객체의 메서드를 호출
- 데이터를 가공하여 값 객체를 생성하거나, JDBC를 사용하여 데이터베이스와의 인터랙션을 통해 값 객체를 생성
- 업무 수행을 마친 결과값을 컨트롤러에게 반환
- 컨트롤러는 모델로부터 받은 결과값을 View에게 전달
- JSP는 전달받은 값을 참조하여 출력할 결과 화면을 만들고 컨트롤러에게 전달
- 뷰로부터 받은 화면을 웹 서버에게 전달
- 웹 브라우저는 웹 서버로부터 요청한 결과값을 응답받으면 그 값을 화면에 출력
MVC의 장점
- 기능별로 코드를 분리하여 하나의 파일에 코드가 모이는 것을 방지하여 가독성과 코드의 재사용 증가
- 각 구성요소들을 독립시켜 협업을 할 때 맡은 부분의 개발에만 집중할 수 있어 개발의 효율성을 높여줌 -> 분업을 가능하게 함
- 개발 후에도 유지보수성과 확장성이 보장됨
MVC의 한계
Model과 View는 서로의 정보를 갖고 있지 않는 독립적인 상태라고 하지만 Model과 View사이에는 Controller를 통해 소통을 이루기에 의존성이 완전히 분리될 수 없음
그래서 복잡한 대규모 프로그램의 경우 다수의 View와 Model이 Controller를 통해 연결되기 때문에 컨트롤러가 불필요하게 커지는 현상이 발생하기도 함
이러한 현상을 Massive-View-Controller현상이라고 하며 이를 보완하기 위해 MVP, MVVM, Flux, Redux등의 다양한 패턴들이 생겨남
다음 시간에는 MVP에 대해 알아보도록 하겠음
출처
https://velog.io/@seongwon97/MVC-%ED%8C%A8%ED%84%B4%EC%9D%B4%EB%9E%80
MVC 패턴이란?
모델-뷰-컨트롤러(model–view–controller, MVC)는 소프트웨어 공학에서 사용되는 소프트웨어 디자인 패턴이다.
velog.io
https://osy0907.tistory.com/63
MVC 패턴이란 무엇인가?
MVC 패턴이란? MVC - Model, View, Controller의 합성어로 소프트웨어 공학에서 사용되는 소프트웨어 *디자인 패턴이다. *디자인 패턴이란? : 건축으로치면 공법에 해당하는 것으로, 소프트웨어의 개발 방
osy0907.tistory.com
https://velog.io/@falling_star3/Tomcat-%EC%84%9C%EB%B8%94%EB%A6%BFServlet%EC%9D%B4%EB%9E%80
[Servlet] 서블릿(Servlet)이란?
서블릿의 개념과 동작 과정, 생명주기(메서드), 인터페이스, 서블릿 컨테이너에 대해 공부하고 정리한 내용입니다.
velog.io
'STUDY > 디자인 패턴' 카테고리의 다른 글
[디자인 패턴] 구조 패턴 - Facade Pattern (0) | 2024.04.10 |
---|---|
[디자인 패턴] MVC와 MVP 패턴 비교 (0) | 2023.06.09 |
[디자인패턴] 행동 패턴 - 전략 패턴 (0) | 2023.06.05 |
[디자인 패턴] 생성 패턴 - 팩토리 메소드 패턴 (0) | 2023.06.05 |
[디자인 패턴] 생성 패턴 - 싱글톤 패턴 (2) | 2023.06.05 |