MVC(Model-View-Controller) 패턴

yesjm·2024년 1월 22일
0

MVC 패턴이란?

사용자 인터페이스, 데이터 및 논리 제어를 구현하는데 널리 사용되는 소프트웨어 디자인 패턴으로, 소프트웨어의 비즈니스 로직과 화면을 구분하는데 중점을 두고 있다.

사용자 인터페이스로부터 비즈니스 로직을 분리하여 애플리케이션의 시각적 요소나 그 이면에서 실행되는 비즈니스 로직을 서로 영향 없이 쉽게 고칠 수 있는 애플리케이션을 만들 수 있게 되는 장점이 있다. 이러한 "관심사 분리" 는 더 나은 업무의 분리와 향상된 관리를 제공한다.

모델 (Model)

모델은 앱이 포함해야할 데이터가 무엇인지를 정의한다. 데이터는 내부의 상태에 대한 정보를 가질 수도 있고, 모델을 표현하는 이름 속성으로 가질 수 있다. 모델의 상태에 변화가 있을 때 컨트롤러와 뷰에 이를 통보한다. 이와 같은 통보를 통해 뷰는 최신의 결과를 보여줄 수 있고, 컨트롤러는 모델의 변화에 다른 적용 가능한 명령을 추가, 제거, 수정할 수 있다.

모델의 규칙

  • 사용자가 편집하길 원하는 모든 데이터를 가지고 있어야만 함
  • 뷰나 컨트롤러에 대해서 어떠한 정보도 알지 말아야 함
  • 변경이 일어나면, 변경 통지에 대한 처리방법을 구현해야 함

뷰 (View)

뷰는 앱의 데이터를 보여주는 방식을 정의한다. 모델로부터 표시할 데이터를 얻어온다.

뷰의 규칙

  • 모델이 가지고 있는 정보를 따로 저장해서는 안됨
  • 모델이나 컨트롤러와 같이 다른 구성 요소를 몰라야 함
  • 변경이 일어나면, 변경 통지에 대한 처리방법을 구현해야 함

컨트롤러 (Controller)

컨트롤러는 앱의 사용자로부터의 입력에 대한 응답으로 모델 및/또는 뷰를 업데이트하는 로직을 포함한다.

컨트롤러의 규칙

  • 모델이냐 뷰에 대해서 알고 있어야 함
  • 모델이나 뷰의 변경을 모니터링해야 함

MVC 패턴을 사용하는 이유

사용자가 보는 페이지, 데이터처리 그리고 이 두 가지를 중간에서 제어하는 컨트롤러. 이 3가지로 구성되는 하나의 애플리케이션을 만들면 각각 맡은바에만 집중할 수 있게 되어 효율성을 높인다.

서로 분리되어 각자의 역할에 집중할 수 있게끔 개발을 하고 애플리케이션을 만든다면, 유지보수성과 애플리케이션의 확장성 그리고 유연성이 증가하고 코드를 재사용함으로써 중복 코딩이라는 문제점 또한 사라지게 된다.

MVC 패턴의 한계

MVC패턴에서 뷰는 컨트롤러에 연결되어 화면을 구성하는 단위 요소이므로 다수의 뷰를 가질 수 있다. 그리고 모델은 컨트롤러를 통해서 뷰와 연결되지만, 컨트롤러에 의해서 하나의 뷰에 연결될 수 있는 모델도 여러 개가 될 수 있어 뷰와 모델이 서로 의존성을 띄게 된다. 즉, Controller에 다수의 Model과 View가 복잡하게 연결되어 있는 상황이 발생할 수 도 있다.

MVC 패턴의 의의

MVC패턴은 결국 어떻게 분리할 것인가에 대한 해답 중 하나이다. 어떤 특정한 역할들에 대해 역할분담을 할 때 가이드라인을 제시하는 방법 중 하나가 바로 MVC패턴이라는 것이다. 이 패턴을 사용한 라이브러리나 프레임워크로 개발을 한다면 정말 쉽고 그리고 재밌는 경험을 느낄 수 있으며 아름다운 코드가 탄생하게 된다.

인기 MVC 프레임워크

프레임워크언어
SpringJava
DjangoPython
ASP.NETC#
ExpressJavaScript
Ruby on RadilsRuby
LaravelPHP

참고

https://developer.mozilla.org/ko/docs/Glossary/MVC
https://opentutorials.org/course/697/3828
https://velog.io/@ljinsk3/MVC-%ED%8C%A8%ED%84%B4

profile
yesjm's second brain

0개의 댓글