MVC 패턴

김민기·2022년 11월 5일
0

SW

목록 보기
1/1

소프트웨어 디자인 패턴에 대해서 공부를 하다보면 가장 많이 보고 듣게되는 디자인 패턴이 MVC 패턴이다.

Model, View, Controller로 나누어서 코딩을 한다는 정도만 알고 있었고 이 방법이 많이 사용된다는 것만 알고 있을 뿐 깊게 고민해보지 않았기 때문에
이번에 한번 정리해본다.

유튜브에서 제리님이 올려주신 [10분 테코톡] 제리의 MVC 패턴 영상을 참고하였습니다.

MVC 관련 내용을 8분이라는 영상동안 알기 쉽게 설명해주셨습니다

MVC?

위에서 설명했듯 Model, View, Controller로 나누어서 소프트웨어를 설계한다. Model, View, Controller가 무엇을 의미하는지 왜 이 패턴을 지켜야 하는 것인지 알아보자

왜 필요한가?

솔직히 코드는 동작하면 그만이다. 이렇게 생각하는 것이 제일 쉽고 간편하다. 하지만 작성한 코드를 다시 봐야하고 발전시켜야 한다면 그때부터는 조심스러워 진다.

이러한 고민들을 이미 경험한 개발자들은 새로운 방법을 찾아야 했을것이다. 결론적으로 유지보수성이 용이한 코드를 만드는 방법을 찾아야 한다는 것이다.

MVC 패턴은 그러한 이유로 만들어졌다. 프로그램의 크기가 커질 수록 코드의 복잡성은 높아지고 이는 유지보수에 어려움을 만들어낸다. 따라서 일련의 규칙을 찾아서 유지보수성을 높이기 위한 필요로 인해 만들어 진 것이다.

MVC 구조

Model, View, Controller

  • model은 데이터와 관련된 부분을 의미한다.
  • view는 사용자에게 보여지는 부분을 의미한다.
  • model과 view를 이어주는 부분을 의미한다.

위 그림을 조금 더 설명하기 쉽게 그려보았다.

만약 검색 사이트를 이용하는 사용자가 "MVC"를 검색한다면

  1. Controller는 Model에 사용자가 입력한 검색어에 대한 결과 데이터를 요청한다.
  2. Model은 검색 결과 데이터를 Controller에 전달한다.
  3. Controller는 그 데이터를 View에 전달한다.
  4. View는 사용자에게 결과를 보여준다.

MVC를 실전에서 사용할 때 지켜야 하는 규칙 5가지

Model은 Controller와 View에 의존해서는 안된다.

Model은 순수하게 데이터를 가져야 한다. Model에서 직접 View를 사용해서는 안된다. 만약 Model에서 View와 관련된 코드를 갖고 있다면 View 관련 코드를 수정할 경우 Model도 같이 수정해야 하는 문제가 발생할 수 있다.

Model은 데이터를 관리하기 때문에 다른 컴포넌트에 의존하면 안된다.

View는 Model에만 의존하고 Controller에는 의존하면 안된다.

View에서 Model의 데이터를 가져와서 보여줘야하기 때문에 Model에 의존한다. 만약 Model의 데이터 형식이 변경되거나 보여지는 데이터의 갯수가 달라질 경우 View 또한 그에 맞춰 UI를 수정해야하기 때문에 의존성을 갖는데 문제가 없다.

View가 Model로부터 데이터를 받을 때는 사용자마다 다르게 보여져야 하는 데이터에 대해서만 받아야 한다.

일반적으로 컴포넌트에서 Props으로 전달받는 데이터를 생각하면 된다. 기본적인 UI는 공통적으로 사용된다. 다만 특정 사용자 또는 상황에 따라 다르게 보여져야하는 데이터를 props으로 전달받아 화면에 보여줘야 한다.

공통적인 부분까지도 Model로 부터 받아올 필요는 없다. 이 부분은 공통적인 부분을 Model에서 처리하냐 View에서 처리하냐 싸움일것 같은데, Model은 데이터를 관리하기 때문에 공통적인 UI는 View에서 처리하는것이 맞다고 생각한다.

Controller는 Model과 View에 의존해도 된다.

Controller는 중개역할로 Model에 데이터를 요청하고 받아온 데이터를 View에 전달해야 한다. 따라서 Model 관련 코드를 작성할 수 있고 Model로 부터 전달받은 데이터를 View에 전달할 수 있어야 한다.

View가 Model로부터 데이터를 받을 때는 반드시 Controller에서 받아야 한다.

View에서 Model로 부터 데이터를 받을 때는 Controller 코드안에서만 받아야 한다. MVC 패턴에서 항상 1개씩 Model, View, Controller를 갖는 것이 아니다. Controller 하나에 여러개의 View가 있을 수 있는데 만약 View에서 직접 Model을 사용한다면 Controller로 관리하는 의미가 없어지게 된다.

정리

MVC 패턴에 대해서 이론적인 내용만 알고 있었는데 실질적으로 Model, View, Controller를 잘 만들어 놓았을 때 유지보수성이 높아질 수 있다는 것을 느꼈고 패턴을 잘 지키고 있는지 확인할 수 있는 방법을 통해 실무에서도 유지보수성이 높은 코드를 만들 수 있을거 같다.

0개의 댓글