[디자인 패턴] MVC pattern

재오·2023년 8월 11일
5

디자인 패턴

목록 보기
1/1
post-thumbnail

예전에 [CS 전공지식 노트] 라는 책에서 얼핏 읽었었던 부분이었다. 디자인 패턴이라는 주제가 처음에는 UI와 관련된 부분도 다루나? 라고 생각하고 가볍게 훑어만 봤던 것 같다. CS라고 하면 흔히 아는 자료구조, 알고리즘, 네트워크 등을 더 중점적으로 봤던 것 같다. 하지만 클린코드를 작성하는 과정에서 우연히 MVC 패턴이라는 것을 알았고 내가 작성하는 코드에 접목시켜보면 좋을 것 같다라는 생각이 들었다.

MVC pattern

우선 간단하게 말하자면 MVC pattern은 소프트웨어의 비즈니스 로직과 화면을 구분하는데 중점을 두고 있다. 한마디로 소프트웨어의 문제를 해결하는 방식으로 정의할 수 있다. 아래에서 더 구체적으로 살펴보자.

MVC는 M(Model), V(View), C(Controller)를 의미한다.

Model(M)

Model의 핵심은 앱에 포함되어야할 데이터가 무엇인지 정의하는 역할이다. MVC 패턴으로 구성된 소프트웨어에서 데이터를 갖고 있는 요소는 Model이다.

  • User가 편집하고자 하는 모든 데이터를 Model이 포함해야 한다.
  • Model은 View, Controller에 대한 어떤 정보도 알지 못한다.

View(V)

View의 핵심은 앱의 데이터를 보여주는 방식을 정의하는 역할이다. MVC 패턴으로 구성된 소프트웨어에서 사용자에게 보여지는 영역에 관한 로직은 View가 실행하는 것이다.

  • Model이 가지고 있는 정보를 따로 저장하지 않는다.
  • View는 Model, Controller에 대한 어떠한 정보도 알지 못한다.

Controller(C)

Controller의 핵심은 앱의 사용자로부터의 입력에 대한 응답으로 Model, View를 업데이트 하는 역할이다. MVC 패턴으로 구성된 소프트웨어에서 사용자의 입력과 같은 특정 이벤트가 발생했을 때 Model과 View의 상태를 변경해주는 로직을 Controller가 수행한다.

  • Controller는 Model과 View에 대한 정보를 알고 있어야 한다.
  • ModelView의 변경을 모니터링해야 한다.

MVC pattern은 비즈니스 로직과 UI로직을 분리하여 유지 보수를 독립적으로 수행할 수 있다는 장점이 있지만 뷰는 컨트롤러에 연결되어 화면을 구성하기 때문에 구현하고자 하는 서비스의 규모가 커지면 뷰의 개수가 많아질 수 있다는 단점이 있다.

profile
블로그 이전했습니다

2개의 댓글

comment-user-thumbnail
2023년 8월 18일
1개의 답글