MVC 패턴
본문 바로가기
항해 후/예상 질문

MVC 패턴

by 은돌1113 2022. 2. 8.
 

MVC 패턴이란?

모델-뷰-컨트롤러(model–view–controller, MVC)는 소프트웨어 공학에서 사용되는 소프트웨어 디자인 패턴이다.

velog.io


 MVC 패턴이란? 

 

모델-뷰-컨트롤러(model–view–controller, MVC)는 소프트웨어 공학에서 사용되는 소프트웨어 디자인 패턴입니다.

이 패턴을 성공적으로 사용하면, 사용자 인터페이스로부터 비즈니스 로직을 분리하여 애플리케이션의 시각적 요소나

그 이면에서 실행되는 비즈니스 로직을 서로 영향 없이 쉽게 고칠 수 있는 애플리케이션을 만들 수 있습니다.

MVC에서 모델(Model)은 애플리케이션의 정보(데이터)를 나타내며, 뷰(View)는 텍스트, 체크박스 항목 등과 같은

사용자 인터페이스 요소를 나타내고, 컨트롤러(Controller)는 데이터와 비즈니스 로직 사이의 상호동작을 관리합니다.

 

여기서의 핵심은 MVC 패턴을 사용하면 사용자 인터페이스로부터 비즈니스 로직을 분리하여

비즈니스 로직을 쉽게 고칠 수 있는 애플리케이션이 된다는 것이라 생각됩니다.

그리고 과거에는 View에 모든 비즈니스 로직까지 넣어 코드의 길이가 길어지고 유지보수가 힘들었으나

최근 MVC 모델은 코드를 3가지 형태로 나누어 개발을 하는 MVC가 기본적인 디자인 패턴이 되어 사용되고 있습니다.


 Model 

  • Date와 애플리케이션이 무엇을 할 것인지 정의하는 부분으로 내부 비지니스 로직을 처리하기 위한 역할을 합니다.
  • 즉, 모델(Model)은 컨트롤러(Controller)가 호출을 하면 DB와 연동하여 사용자의 입출력 데이터를 다루는 일과 같은데이터와 연관된 비지니스 로직을 처리하는 역할을 합니다.
  • 데이터 추출, 저장, 삭제, 업데이트 등의 역할을 수행합니다.

Model은 다음과 같은 규칙을 가집니다.

  • 사용자가 편집을 원하는 모든 데이터를 가지고 있어야 합니다.
  • View, Controller에 대해서 어떤 정보도 몰라야 합니다.
  • 변경이 일어날 경우 변경 통지에 대한 처리 방법을 구현 해야 합니다.

 View 

  • View는 사용자에게 보여주는 화면(UI)이 해당합니다.
  • 사용자와 상호작용을 하며 컨트롤러(Controller)로부터 받은 모델의 결과값을 사용자에게 화면으로 출력합니다.
  • MVC에서는 여러 개의 View가 존재할 수 있습니다.
  • Model에서 받은 데이터는 별도로 저장하지 않습니다.

View는 다음과 같은 규칙을 갖고 있습니다.

  • Model이 가지고 있는 정보를 따로 저장 해서는 안됩니다.
  • Model이나 Controller와 같이 다른 구성 요소들을 몰라야 합니다.
  • 변경이 일어나면 변경 통지에 대한 처리방법을 구현 해야 합니다.

즉, Model과 View는 서로의 존재를 몰라야 합니다.

 

 Controller 

  • Controller는 Model과 View 사이를 이어주는 인터페이스 역할을 합니다.
  • 즉, Model이 데이터를 어떻게 처리할지 알려주는 역할을 합니다.
  • 사용자로부터 View에 요청이 있으면 Controller는 해당 업무를 수행하는 Model을 호출하고 Model이 업무를 모두 수행하면 다시 결과를 View에 전달하는 역할을 합니다.

Controller는 다음과 같은 규칙을 갖고 있습니다.

  • Model이나 View에 대해서 알고 있어야 합니다.
  • Model이나 View의 변경을 모니터링 해야 합니다.

 

 MVC의 장점 

  • 기능별로 코드를 분리하여 하나의 파일에 코드가 모이는 것을 방지하여 가독성과 코드의 재사용이 증가합니다.
  • 각 구성 요소들을 독립 시켜 협업을 할 때 맡은 부분에서 개발에만 집중 할 수 있기 때문에 개발의 효율성을 높여줍니다. (분업화)
  • 개발 후에도 유지보수성과 확장성이 보장 됩니다.

 MVC의 한계 

 

Model과 View는 서로의 정보를 갖고 있지 않는 독립적인 상태라고 하지만

Model과 View사이에는 Controller를 통해 소통을 이루기에 의존성이 완전히 분리될 수 없습니다.

그래서 복잡한 대규모 프로그램의 경우 다수의 View와 Model이 Controller를 통해 연결되기 때문에

컨트롤러가 불필요하게 커지는 현상이 발생 하기도 합니다.

 

이러한 현상을 Massive-View-Controller 현상 이라고 하고,

이를 보완하기 위해 MVP, MVVM, Flux, Redux 등의 다양한 패턴들이 등장 하였습니다.

'항해 후 > 예상 질문' 카테고리의 다른 글

Closure  (0) 2022.02.10
AJAX  (0) 2022.02.09
CSR vs SSR  (0) 2022.02.08
DOM(Document Object Model)  (0) 2022.02.08
webPack  (0) 2022.02.08

댓글