기본 정의
관심사에 따라 비즈니스 로직과 화면을 분리
모델 : 데이터와 비즈니스 로직 관리
뷰 : 레이아웃과 화면 처리
컨트롤러 : 모델과 뷰로 명령 전달
사용 이유
1. 관심사 분리
2. 각자의 역할이 구분되어 있어 서로간의 결합도를 낮출 수 있음
3. 분리되어 있기에 코드의 재사용성 및 확장성 높음
4. 변경 필요 부분 쉽게 파악 가능하여 유지보수 및 테스트 용이
5. 협업 시, 커뮤니케이션 효율성 높음 -> 코드 충돌 방지 가능
한계점
- Model과 View의 의존성 완전 분리 힘
- 하나의 컨트롤러에 여러 개의 Model과 View가 엉키게 되어 의존성이 커
- 컨트롤러의 부담이 커짐 (Massive-View-Controller 현상)
모델
SW, APP에서 정보 및 데이터 부분
Controller에게 받은 데이터를 조작(가공)하는 역할을 수행
규칙
1. 사용자가 편집을 원하는 모든 데이터를 가져야 함
2. View나 Controller에 대해 어떤 정보도 알지 말아야 함
3. 변경 발생 시, 변경 통지에 대한 처리 방법 구현 해야 함
뷰
사용자 인터페이스 요소
Controller에게 받은 Model의 데이터를 보여주는 역할을 수행
규칙
1. Model은 정보를 따로 저장해선 안된다.
2. Model이나 Controller에 대해 어떤 정보도 알지 말아야 함
3. 변경이 일어나면 변경통지에 대한 처리방법 구현해야 함
컨트롤러
Model과 View 사이의 데이터 흐름 제어
즉, Model과 View의 역할을 분리하는 역할 수행
규칙
1. Model과 View에 대해 알고 있어야 함.
2. Model이나 View의 변경을 모니터링 해야 함.
실전 MVC 코딩 규칙
의존 = 의존하는 대상의 코드를 가지고 있어도 됨
1. Model은 Controller나 View에 의존 X
2. View는 Model에만 의존 (Controller 의존 X)
- 의존하는 경우, 사용자마다 별개의 데이터 전송 시에만 해당
3. Controller는 Model과 View 의존 가능
4. View가 Model의 데이터 받을 시, Controller 통해 받아야 함
참고 자료
MVC - MDN Web Docs 용어 사전: 웹 용어 정의 | MDN (mozilla.org)
MVC - MDN Web Docs 용어 사전: 웹 용어 정의 | MDN
MVC (모델-뷰-컨트롤러) 는 사용자 인터페이스, 데이터 및 논리 제어를 구현하는데 널리 사용되는 소프트웨어 디자인 패턴입니다. 소프트웨어의 비즈니스 로직과 화면을 구분하는데 중점을 두고
developer.mozilla.org
여기도 MVC, 저기도 MVC! MVC 패턴이 뭐야? (velog.io)
여기도 MVC, 저기도 MVC! MVC 패턴이 뭐야?
어딜가든 MVC에 대해서 많이 듣고 접하게 되는데 과연 MVC 패턴은 무엇이고 왜 등장했는지, 더 나아가 MVC의 필요성과 한계점은 무엇인지 학습하고 고민한 내용을 기록하였습니다.
velog.io
'🛠 백엔드 > Spring' 카테고리의 다른 글
[Spring] 민감한 정보 관리하기 wt. secretKey (0) | 2024.07.01 |
---|---|
RequestBody의 원리와 기본 생성자 (0) | 2024.05.23 |
JDBC란 무엇인가? (+ Spring JDBC) (0) | 2024.05.19 |
[초록스터디] Spring MVC 회고 (0) | 2024.05.15 |
[Java] 일급 컬렉션을 왜 사용할까? (0) | 2024.05.05 |