MVC Pattern

스머리·2023년 11월 10일
0

MVC

MVC(model-view-controller)는 소프트웨어 공학에서 사용되는 소프트웨어 디자인 패턴이다. 개발 시 3가지 형태로 역할을 나누어 개발하는 방법론이다. 비즈니스 처리 로직과 사용자 인터페이스 요소들을 분리시켜 서로 영향없이 개발 하기 수월하다는 장점이 있다.

  • 게시판을 예로 들면, 게시판에 쓰이고 읽히고 수정되는 글들은 데이터 베이스의 데이터로 저장된다. 이 데이터의 형식을 지정하고 저장하고 불러오는 작업들에 관한 코드들이 Model 파트에서 이루어진다.
  • 이것을 사용자들이 목록과 글, 입력화면 등으로 시각적으로 볼 수 있게 해주는 html, css 요소가 View 파트에 작성된다.
  • Model의 데이터를 View에 연결해서 사용자가 GUI 화면을 통해 데이터를 읽고 쓰고 지우고 할 수 있도록 전반적 제어를 하는 파트가 Controller 이다.


모델, 뷰, 컨트롤ㄹ러의 관계를 묘사하는 간단한 다이어그램.


웹 애플리케이션에서 일반적인 MVC 구성요소 다이어그램

Model

애플리케이션의 정보, 데이터를 나타낸다. 데이터베이스, 처음 정의하는 상수, 초기화값, 변수 등을 뜻한다. 또한 이러한 data, 정보들의 가공을 책임지는 컴포넌트를 말한다.
이 모델은 다음과 같은 규칙을 가지고 있다.

규칙
1. 사용자가 편집하길 원하는 모든 데이터를 가지고 있어야 한다.

  • 즉 화면안의 네모박스에 글자가 표현된다면, 네모박스의 화면 위치 정보, 네모박스의 크기정보, 글자내용, 글자의 포맷 정보 등을 가지고 있어야 한다는 것이다.
  1. 뷰나 컨트롤러에 대해서 어떤 정보도 알지 말아야 한다.
  2. 변경이 일어나면, 변경 통지에 대한 처리방법을 구현해야만 한다.

View

사용자에게 보여지는 부분, 즉 유저 인터페이스를 의미한다.
MVC 패턴은 여러 개의 View가 존재할 수 있으며, 모델에게 질의하여 데이터를 전달 받는다.
뷰는 받은 데이터를 화면에 표시해주는 역할을 가지고 있으며, 모델에게 전달받은 데이터를 별도로 저장하지 않아야 한다. 사용자가 화면에 표시된 내용을 변경하게 되면 모델에게 전달하여 모델을 변경해야 한다.

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

Controller

모델과 뷰 사이를 이어주는 브릿지 역할을 의미한다.
모델이나 뷰는 서로의 존재를 모르고 있다. 변경 사항을 외부로 알리고 수신하는 방법만 있다. 컨트롤러는 이를 중재하기 위해 모델과 뷰에 대해 알고 있어야 한다. 모델이나 뷰로부터 변경 내용을 통지 받으면 이를 각 구성 요소에게 통지해야 한다. 사용자가 어플리케이션을 조작하여 발생하는 변경 이벤트들을 처리하는 역할을 수행한다.

규칙
1. 모델이나 뷰에 대해 알고 있어야 한다.
2. 모델이나 뷰의 변경을 모니터링 해야 한다.

MVC 패턴 장점

  • MVC 패턴을 가진 시스템의 각 컴포넌트는 자신이 맡은 역할만 수행한 후 다른 컴포넌트로 결과만 넘겨주면 되기 때문에 시스템 결합도를 낮출 수 있다.
  • 유지보수 시에도 특정 컴포넌트만 수정하면 되기 때문에 보다 쉽게 시스템 변경이 가능하다.
  • 기능별로 코드를 분리하여 하나의 파일에 코드가 모이는 것을 방지하여 코드의 가독성, 확장성, 재사용성이 증가한다.

MVC 패턴의 한계

복잡한 대규모 프로그램의 경우 다수의 뷰와 모델이 컨트롤러를 통해 연결되기 때문에 컨트롤러가 불필요하게 커지는 현상이 발생한다. 복잡한 화면을 구성하는 경우에도 동일한 현상이 발생하는데 이를 'Massive-View-Controller'라고 한다.

그 외 다양한 디자인 패턴

  • MVP 패턴
  • MVVM 패턴
  • Flux
  • Redux
  • RxMVVM

profile
꾸준히 나아가는 프론트엔드 개발자

0개의 댓글