MVC Pattern

HYl·2022년 3월 6일
0

MVC (Model, View, Controller)

  • 모델-뷰-컨트롤러(model–view–controller, MVC)는 소프트웨어 공학에서 사용되는 소프트웨어 디자인 패턴이다.
  • 어플리케이션을 세 개의 영역으로 분할하고 각 구성 요소에게 고유한 역할을 부여하는 개발 방식이다. MVC 패턴을 도입하면 도메인(비즈니스 로직) 영역과 UI 영역이 분리되므로 서로 영향을 주지 않고 유지보수가 가능
  1. 클라이언트가 API로 데이터를 요청 Client → Controller
  2. 데이터베이스에 데이터를 요청 Controller → Model
  3. 요청에 따라서 데이터를 관리 및 응답 Model → Controller
  4. 응답 받은 데이터를 클라이언트로 전송 Controller → View
  5. 데이터를 화면으로 나타냄 View → Client

Model

Data, 정보들의 가공을 책임지는 컴포넌트

  • 모델은 어플리케이션의 정보, 데이터를 나타낸다. 데이터베이스, 처음의 정의하는 상수, 초기화 값, 변수 등을 뜻한다. 비즈니스 로직을 처리한 후 모델의 변경사항을 컨트롤러와 뷰에 전달한다

Model 의 규칙

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

View

사용자에게 보여지는 부분, 즉 유저 인터페이스(User interface)를 의미

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

View 의 규칙

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

Controller

모델(Model)과 뷰(View) 사이를 이어주는 브릿지(Bridge) 역할을 의미

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

Controller 의 규칙

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

MVC 패턴의 한계

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

문제점 보완하기 위하여, 다양한 패턴이 파생되었다.

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

[디자인패턴] MVC, MVP, MVVM 비교


profile
꾸준히 새로운 것을 알아가는 것을 좋아합니다.

0개의 댓글