Backend

[디자인 패턴] MVC 패턴

미누라니까요 2024. 10. 9. 18:12
728x90
반응형
SMALL
MVC 패턴, 백엔드 개발자라면 아마 지겹도록 들었을 것이다.

현재 프론트엔드 개발을 공부하고 있는데, React가 아닌 Flutter를 사용하여 개발하던 도중 디자인 패턴이 적용된 프로젝트를 하게 되어 많은 어려움을 겪었다.


머리로 들어받으며 깨우친 디자인 패턴들에 대하여 정리하려 한다.

 

MVC 패턴 (Model - View - Controller)

 

사진 출처 - MDN Web Docs

 

 

MVC 패턴은 말 그대로 Model, View, Controller로 구성되어 있다.

 

각 구성 요소에 대하여 간략히 알아보자

 


Model

  • 어플리케이션의 핵심 데이터를 관리, 데이터와 관련된 비즈니스 로직 처리
  • DB에서 데이터를 저장하거나 꺼내오는 역할을 수행

Model은 DB와 연결된 부분이라고 생각해도 좋다. DB에 있는 데이터를 가져오는 것부터, 가져와서 가공하여 가지고 있는 것까지 Model에서 처리한다.

 

 

 

 

View 

  • 말 그대로 사용자가 보게되는 부분
  • Model에서 받아온 데이터를 그대로 표시하는 역할 뿐
  • 데이터를 가공하고 수정하지 않음

View에서는 데이터를 그대로 화면(Web 혹은 App)에 띄워주는 역할을 한다. 

따라서 View에서는 데이터를 띄우기 위해 가공하거나 수정하지 않는다. 

 

 

Controller

  • 사용자가 View에서 입력을 넣으면 Controller가 처리
  • 이벤트 처리에 대한 로직이 포함
  • 특정 동작을 요청하는 이벤트가 들어오면 Model에서 데이터를 받아 수행한 후 View로 반환

Model과 View의 중재자 역할을 한다.

사용자의 요청을 받아와 처리하는 부분이기 때문에, 비즈니스 로직같은 코드들이 포함된다.

 

 

 


MVC 패턴의 장점

  • 코드의 역할 분리로 인한 유지보수 용이
  • 비즈니스 로직(Controller)과 UI 로직(View)이 분리되어 있어 테스트가 용이
  • 동일한 Model이나 Controller를 재사용할 수 있음

 

MVC 패턴의 단점

  • Fat Controller : Controller에 지나치게 많은 코드가 들어가면 유지보수와 가독성이 떨어진다.
  • Fat Model 문제 : Model이 명확하지 않아 많은 코드가 들어갈 경우 테스트가 어려워지고, 재사용성이 감소한다.
  • 복잡해지는 경우 유지보수 어려움

 

 

이처럼 MVC 패턴은 고질적으로 Model, View, Controller의 구분이 명확하지 않기 때문에 규모있는 개발 환경에서는 잘 사용하지 않고 있다.

 

 

 

 

요즘은 MVC 패턴의 단점을 보완한 MVVM을 많이 사용한다.

 

728x90
반응형
LIST