TIL 20240110- MVC 패턴

2024. 1. 10. 21:57스프링

오늘은 특강으로 들었던 것을 정리해보려고 한다! MVC 패턴 누구나 개발을 공부하는 사람이라면 한 번씩은 들어봤을 듯한 것이다. 애초에 정처기를 공부했던 터라 모델 뷰 컨트롤러를 의미한다는 것은 알 고 있었다.

 

 

 

MVC(model–view–controller)는 소프트웨어 공학에서 사용되는 소프트웨어 디자인 패턴이다. 이 패턴을 성공적으로 사용하면, 사용자 인터페이스로부터 비즈니스 로직을 분리하여 애플리케이션의 시각적 요소나 그 이면에서 실행되는 비즈니스 로직을 서로 영향 없이 쉽게 고칠 수 있는 애플리케이션을 만들 수 있다. MVC에서 모델은 애플리케이션의 정보(데이터)를 나타내며, 는 텍스트, 체크박스 항목 등과 같은 사용자 인터페이스 요소를 나타내고, 컨트롤러는 데이터와 비즈니스 로직 사이의 상호동작을 관리한다.

 

 

모델

 

DATA, 정보들의 가공을 책임지는 컴포넌트를 의미한다.
모델(Model)은 어플리케이션의 정보, 데이터를 나타낸다. 데이타베이스, 처음의 정의하는 상수, 초기화 값, 변수 등을 뜻한다. 비즈니스 로직을 처리한 후 모델의 변경사항을 컨트롤러와 뷰에 전달한다.

 

 

사용자에게 보여지는 부분, 즉 유저 인터페이스(User interface)를 의미한다.

MVC 패턴은 여러 개의 뷰(View)가 존재할 수 있으며, 모델에게 질의하여 데이터를 전달받는다. 뷰는 받은 데이터를 화면에 표시해주는 역할을 가지고 있으며, 모델에게 전달받은 데이터를 별도로 저장하지 않아야 한다. 사용자가 화면에 표시된 내용을 변경하게 되면 모델에게 전달하여 모델을 변경해야 한다

 

 

컨트롤러 

 

모델(Model)과 뷰(View) 사이를 이어주는 브릿지(Bridge) 역할을 의미한다.
모델이나 뷰는 서로의 존재를 모르고 있습니다. 변경 사항을 외부로 알리고 수신하는 방법만 있다. 컨트롤러(Controller)는 이를 중재하기 위해 모델과 뷰에 대해 알고 있어야 한다. 모델이나 뷰로부터 변경 내용을 통지 받으면 이를 각 구성 요소에게 통지해야 다. 사용자가 어플리케이션을 조작하여 발생하는 변경 이벤트들을 처리하는 역할을 수행한다.

 

 

장점

 

MVC 패턴을 가진 시스템의 각 컴포넌트는 자신이 맡은 역할만 수행한 후 다른 컴포넌트로 결과만 넘겨주면 되기 때문에 시스템 결합도를 낮출 수 있다.
유지보수 시에도 특정 컴포넌트만 수정하면 되기 때문에 보다 쉽게 시스템 변경이 가능하다.
기능별로 코드를 분리하여 하나의 파일에 코드가 모이는 것을 방지하여 코드의 가독성,확장성,재사용성이 증가한다.

 

 

한계

복잡한 대규모 프로그램의 경우 다수의 뷰와 모델이 컨트롤러를 통해 연결되기 때문에 컨트롤러가 불필요하게 커지는 현상이 발생한다. 복잡한 화면을 구성하는 경우에도 동일한 현상이 발생하는데 이를 'Massive-View-Controller' 라고 한다.

 

 

 

 

보통은 이런식으로 MVC 패턴을 사용했었으나! 

 

 

 

 

 

요새는 주로 뷰를 사용하지 않고 @ResponseBoby를 통해서나 RESTful API 주고 받기 때문에 MVC 패턴이라고 보기보단 MVC기반이라고 표현이 맞는 것 같다는 튜터님의 말씀이 일리가 있다.

완벽하게 MVC 이름처럼 모델 뷰 컨트롤러를 사용하는 것이 아니므로,,, 패턴이라기보단 기반이라는 게,, 낫다고,, 강의를 듣던 나도 동감했다.

 

'스프링' 카테고리의 다른 글

TIL 20240116- AOP(Aspect-Oriented Programming)  (0) 2024.01.16
TIL 20240115- 뉴스피드 프로젝트 KPT 회고  (2) 2024.01.15
TIL 20240109- JPA Auditing  (0) 2024.01.09
TIL 20240108- 뉴스피드 프로젝트 시작  (0) 2024.01.08
TIL 20240105  (0) 2024.01.05