[디자인패턴] MVC 패턴

REASON·2022년 10월 25일
0

CS

목록 보기
6/7

MVC 라는 말은 한번씩 들어보긴 했는데 MVC가 도대체 뭐길래 다들 MVC, MVC 하는걸까
문득 궁금해져서 오늘은 MVC 패턴이 무엇인지 알아보기로 했다.

MVC 패턴

MVC 패턴은 모델(Model), 뷰(View), 컨트롤러(Controller)로 구성된 디자인 패턴이다.
역할이 구분되어 있기 때문에 재사용성, 확장성이 용이하다.
컨트롤러가 모델을 통해 데이터를 수집하고, 받아온 모델 정보는 뷰에게 전달하게 된다.
MVC 패턴은 문제를 분리하는데 도움을 줄 수 있다.

모델(Model) : 데이터와 관련된 것. (데이터베이스, 변수 등) 데이터를 불러오고 데이터 형식 지정 등이 모델에서 이루어진다. 앱에서 포함할 데이터를 정의하는 곳이 모델이다.

뷰(View) : 시각적으로 보여지는 html, css나 사용자가 입력한 값과 같은 것이 뷰에 해당한다. (UI)
모델을 기반으로 사용자가 볼 수 있는 화면을 의미한다. 여기서 중요한 점은 모델의 정보를 뷰가 가지고 있으면 안된다는 것이다. 즉, 사용자 인터페이스 요소에 해당하는 정보만 포함해야 한다.
표시할 데이터가 있다면 모델로부터 받아오게 된다.

컨트롤러(Controller) : 뷰에서 데이터를 생성 및 수정했을 때 컨트롤러가 모델을 생성 또는 갱신시킨다. 컨트롤러가 모델과 뷰를 이어주는 역할을 한다. 뷰로부터 사용자 입력 데이터를 모델에게 전달해주거나, 모델에서 데이터를 가져와서 뷰에게 전달해주기도 한다.
사용자로부터 입력에 대한 응답으로 모델, 뷰를 업데이트하는 로직을 포함한다.

MVC 패턴의 단점으로는 모델이나 모델과 관련한 뷰가 많아지는 경우
시스템의 복잡도가 올라갈 수 있다는 것이다.

MVC 패턴은 결국 문제를 분리한다는 것이 가장 중요해 보였다.
모델과 뷰가 많아지면 컨트롤러가 비대해져서 복잡해질 수도 있다는 문제로 MVC 패턴 외에도
MVC에서 파생된 MVP 모델이라던가, MVVM 모델에 대해서도 궁금해져서 추후에 천천히 다른 디자인 패턴도 공부해봐야겠다.


참고 자료
면접을 위한 CS 전공지식 노트
MDN MVC
MVC 웹 프레임워크가 뭔가요?
페이스북의 결정: MVC는 확장에 용이하지 않다. 그렇다면 Flux다.
마이크로소프트 MVC 패턴
ASP.NET Core MVC 시작

0개의 댓글