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 패턴에 맞게 코드를 작성할 수 있다.
참고자료
'CS지식' 카테고리의 다른 글
SOLID 원칙 (0) | 2023.05.07 |
---|---|
클린코드의 개념 (0) | 2023.05.02 |
URL에 SSAFY를 검색하면 일어나는 과정 (0) | 2023.04.27 |
GET방식 POST방식 특징 (0) | 2023.04.18 |