MVC 디자인 패턴
디자인 패턴이란 ?
디자인 패턴은 프로그램 개발에서 자주 나타나는 문제를 해결하기 위한 방법 중 하나로, 소프트웨어 개발 과정에서 발견된 설계의 노하우를 축적하여 이름을 붙이고 후에 재이용하기 좋은 형태로 특정의 규약을 묶어서 정리한 것이다.
알고리즘과 같이 프로그램 코드로 바로 변환될 수 있는 형태는 아니지만, 특정한 상황에서 구조적인 문제를 해결하는 방식을 설명해 준다.
작업의 뼈대를 의미하며 개발자간의 소통에 큰 도움을 준다.
MVC 패턴
MVC 는 Model, View, Controller의 약자다.
하나의 프로젝트(어플리케이션)를 구성할 때 그 구성요소를 세가지의 역할로 구분한 패턴이다.
도메인(비즈니스)로직과 UI로직을 분리하여 유지보수를 독립적으로 수행할 수 있게 하는 장점이 있다.
아래 그림과 같은 형식으로 프로그램이 작동한다.
Model
- 어플리케이션에 사용되는 데이터베이스(DB), 상수, 문자열과 같은 변수 등의 데이터를 가지고 있다.
- 모든 데이터와 데이터 상태에 대한 정보, 데이터 처리 관련 로직을 가지고 있다.
- 모델에는 뷰나 컨트롤러의 정보가 전혀 없고 정보만 반환하거나 설정할 수 있다.
- 컨트롤러의 조작을 받아 데이터를 처리하고 반환해준다.
- DTO, DAO에 대한 개념을 알고 있다면 이해하는데 도움이 된다.
View
- 사용자에게 보여지는 부분, 즉 유저 인터페이스(UI)를 의미한다.
- 데이터를 그릴 뿐, 모델이 가지고 있는 정보를 따로 저장해서는 안된다.
- 데이터를 그릴 뿐, 인터페이스의 행동에 대한 결정은 모두 컨트롤러에게 맡긴다.
- 사용자가 제어하고 데이터를 확인할 수 있는 영역이다.
- 뷰에서 입력받고 출력해주는 모든 데이터는 모델을 사용해야합니다.
Controller
- 어플리케이션의 비지니스 로직이 구현되어 있다.
- 사용자가 View에서 어떤 요청을 했는지 해석하고 그에 따라 Model에게 어떤 데이터를 가지고 어떤 작업을 해야하는지 알려준다.
- Model을 통해서 필요한 데이터를 가져와 응답(Response)을 구성하고 View에 전달한다.
- 사용자가 버튼을 클릭하면 이벤트는 뷰에서 발생하지만 내부 처리는 컨트롤러에서 관리하는 것이다.
- 어플리케이션을 구성할 때 여러개의 Controller를 사용해도 된다 !
MVC 패턴의 장점
- M, V, C가 서로 분리되어 각자의 역할에 집중할 수 있게 개발을 할 수 있다.
-> 포지션에 맞게 분업 및 협업하기에 좋다.
- 유지보수성, 애플리케이션의 확장성, 유연성이 증가한다.
- 중복코딩이라는 문제점 또한 사라지게 된다.