MVC 패턴

2023. 4. 13. 00:55· CS지식
목차
  1. MVC패턴이 생겨난 이유
  2. MVC란?
  3. 그러면 왜 MVC를 사용해야 좋은 걸까??
  4. MVC 패턴의 한계

MVC패턴이 생겨난 이유

프로그램의 코드가 많아지면 많아질 수록 코드가 복잡해져서 파악하기도 어렵고, 유지보수가 많이 어려워졌다.

그러다가 프로그래머들이 하나의 패턴을 찾게 되었고, 이걸 논문으로 발표하면서 MVC 패턴이 유명해지게 되었다.

 

MVC -> 유지보수가 편해지는 코드 구성 방식

 

1. 클라이언트가 구글에 "개발자"라고 검색
2. 컨트롤러는 요청을 받아서 모델에 "개발자"에 대한 검색 결과 데이터를 달라고 요청
3. 데이터를 받은 컨트롤러는 View한테 검색 결과 데이터를 전달한다.
4. View는 사용자가 보는 UI(레이아웃)에 검색 결과 데이터를 넣어서 웹페이지로 보여준다.

 

  • Model : 데이터와 관련된 부분
  • View : 사용자한테 보여지는 부분
  • Controller : Model과 View를 이어주는 부분

 

MVC란?

MVC는 하나의 디자인 패턴이다.

 

디자인 패턴은 간단하게 말하면 프로그램이나 어떤 특정한 것을 개발하는 중에 발생했던 문제점을 정리해서 상황에 따라 간편하게 적용해서 쓸 수 있는 것을 정리해서 특정한 "규약"을 통해 쉽게 쓸 수 있는 형태로 만들어놓은 것이다.

 

 

 

 

지금부터 말하는 5개의 규칙을 알면 MVC패턴을 지키면서 코딩이 가능하다

 

1. Model은 컨트롤러와 뷰에 의존하지 않아야 한다.(Model 내부에 Controller와 View에 관련된 코드가 있으면 안 된다.) 즉 클래스를 import 해서 사용하면 안 된다.

이 코드를 보면 컨트롤러나 뷰에 관련된 코드가 없는 것을 볼 수 있다.

 

2. View는 Model에만 의존해야 하고, Controller에는 의존하면 안 된다.(View 내부에 Model의 코드만 있을 수 있고, Controller의 코드가 있으면 안 된다.)

위 코드에서는 printProfile 메서드의 파라미터로 Student를 받는데 Student는 모델이다.

 

 

3. View가 Model로부터 데이터를 받을 때는, 사용자마자 다르게 보여주어야 하는 데이터에 대해서만 받아야 한다.

 

 

모든 사용자에게 똑같이 보여주어야 하는 부분은 Model로부터 받는 것이 아니라 View가 자체적으로 가지고 있어야 하는 정보들이다.

4. Controller는 Model과 View에 의존해도 된다.

Model과 View를 이어주는 역할을 하는 것이 Controller이기 때문에 둘 다 의존이 가능하다.

 

5. View가 Model로부터 데이터를 받을 때, 반드시 Controller에서 받아야 한다.

위 코드에서는 Model인 Student클래스를 만들어서 학생 데이터를 생성하고 View의 printProfile로 전달하는 것을 볼 수 있다. 즉 View가 Model로부터 데이터를 받을 때는 항상 Controller 에서 받아야 한다.

 

 

그러면 왜 MVC를 사용해야 좋은 걸까??

  • 비즈니스 로직과 UI로직을 분리하여 유지보수를 독립적으로 수행이 가능하다.
  • Model과 VIew가 다른 컴포넌트들에 종속되지 않아 어플리케이션의 확장성, 유연성에 유리하다.
  • 중복 코딩의 문제점을 제거.

 

MVC 패턴의 한계

VIew는 Controller에 연결되어 화면을 구성하는 단위 요소이므로 여러 개의 View를 가질 수 있다. 또 Model은 Controller에 의해 VIew와 연결되지만, Controller에 의해서 하나의 View에 연결될 수 있는 Model도 여러 개가 될 수 있어 View와 Model이 서로 의존성을 띄게 된다. 즉 Controller에 다수의 Model과 View가 복잡하게 연결되어 있는 상황이 발생할 수 있다.

 

 

 

 

 

이 5가지 규칙을 지키면 MVC 패턴에 맞게 코드를 작성할 수 있다.

 

 

참고자료

더보기

https://www.youtube.com/watch?v=ogaXW6KPc8I 

https://cocoon1787.tistory.com/733

 

[개발상식] MVC 패턴이란? (Model-View-Controller)

🚀 이번 포스팅은 개발자 면접에서 자주 나오는 질문 중의 하나인 "MVC패턴"에 대한 내용입니다. MVC패턴의 의미와 사용해야 하는 이유, 사용 예시 등등에 대해 알아보겠습니다. 💡 MVC 패턴이란?

cocoon1787.tistory.com

 

 

반응형

'CS지식' 카테고리의 다른 글

SOLID 원칙  (0) 2023.05.07
클린코드의 개념  (0) 2023.05.02
URL에 SSAFY를 검색하면 일어나는 과정  (0) 2023.04.27
GET방식 POST방식 특징  (0) 2023.04.18
  1. MVC패턴이 생겨난 이유
  2. MVC란?
  3. 그러면 왜 MVC를 사용해야 좋은 걸까??
  4. MVC 패턴의 한계
'CS지식' 카테고리의 다른 글
  • SOLID 원칙
  • 클린코드의 개념
  • URL에 SSAFY를 검색하면 일어나는 과정
  • GET방식 POST방식 특징
indeep
indeep
백준 - https://www.acmicpc.net/user/esu08259 깃허브 - https://github.com/qkrrlgus114
불편한 게 싫어백준 - https://www.acmicpc.net/user/esu08259 깃허브 - https://github.com/qkrrlgus114
indeep
불편한 게 싫어
indeep
글쓰기방명록관리자
전체
오늘
어제
  • 분류 전체보기 (180)
    • 알고리즘문제 (11)
      • 백준 (10)
      • swea (1)
    • CS지식 (27)
      • HTTP 웹 지식 (4)
    • 일상 (1)
    • 스프링 강의(인프런) (4)
    • JAVA 강의(인프런) (11)
    • JAVA (8)
    • 오류해결 (31)
    • Vue (5)
    • 싸피 (4)
    • 스프링 개념 (2)
    • git 관련 (1)
    • 면접 (4)
    • 기타 (14)
    • 프로젝트 (45)
      • RESTAPI 추천 서비스 (34)
      • 씈크럼 프로젝트 (11)
    • 독서 (3)
    • 행사 || 컨퍼런스 (4)
    • 회고 (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

최근 댓글

hELLO · Designed By 정상우.v4.2.2
indeep
MVC 패턴
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.