목록으로
Design Pattern

MVC 디자인 패턴에 대해서 알아보자

Dev Park
11/20/2022
27 views

서론

내 게시글이나 여러가지 웹 서비스를 만들기 위한 글을 읽은 적이 있다면 한번쯤은 MVC패턴에 대해서 들어봤을 것이다.
오늘은 MVC패턴이 무엇인지, 왜 사용해야하는지에 대해서 알아보자.

디자인패턴

디자인패턴은 프로그램을 만들때 유지보수 및 협업을 위해 정형화된 틀과 규약을 만든 형태를 말한다.

MVC패턴

MVC패턴은 디자인패턴의 한 종류이다.
웹 서비스를 Model, View, Controller 세 파트로 나누어서 설계하는 디자인 패턴이다.
이 각 레이어들은 무슨 역할을 할까?

Model

데이터의 가공을 책임지는 레이어이다.

Model은 다음과 같은 규칙이 있다.

사용자가 편집해야하는 모든 데이터를 가지고있어야한다.
View나 Controller에 대해서 어떤 정보도 알지 말아야한다.
변경이 일어나면, 그 변경에 대해서 통지해야한다.

즉 비지니스 로직을 처리하고, 처리한 변경사항을 컨트롤러와 뷰에 전달하는 역할을 한다.

View

사용자에게 보여지는 인터페이스의 역할을 한다.
모델에게 처리받은 데이터를 전달받아 화면에 출력하는 역할을 한다.

View는 다음과 같은 규칙이 있다.

Model로 부터 받은 정보를 따로 저장하면 안된다.
Model과 Controller에 대해서 몰라야한다.
변경이 일어나면, 그 변경에 대해서 통지해야한다.

Controller

Model과 View 사이를 이어주는 다리역할을 한다.
Model과 View는 서로의 존재를 몰라야하기 때문에, 변경사항을 그저 외부로 내보내기만 한다.
이때 Controller는 Model과 View 사이에서 이를 중재하기 위한 존재이다.
서로의 변경사항을 서로에게 전달해주고, 변경이벤트가 일어났을때 그것을 처리하는 역할을 한다.

Controller는 다음과 같은 규칙이 있다.

Model과 View에 대해서 알고 있어야한다.
Model이나 View의 변경사항을 모니터링 해야한다.

왜 사용할까?

딱 보기에도 복잡한 구조같은데 왜 사용해야할까?
그건 유지보수의 편리성을 위해서이다.
서로 다른 기능들끼리 결합도가 높아지면, 유지보수 작업을 할 시 서로에게 끼치는 영향이 많아진다.
이 경우 서로를 신경써야하고, 요구되는 비용도 높아진다.
그렇기때문에 각자의 기능에 따라 레이어를 구분해서 코드를 짠다면 유지보수를 할 떄 서로에게 끼치는 영향이 적어져 좀 더 유지보수에 편리하게 된다.

마치며

오늘은 MVC패턴에 대해서 알아봤다.
거의 모든 프로그래밍 규칙은 유지보수의 편리성을 위한 것임을 느낄 수 있는 것 같다.