디자인 패턴 - MVC, MVP, MVVM

김철회·2022년 10월 25일
0
post-thumbnail

컴퓨터 공학의 기초 지식으로 디자인 패턴이 있다고 한다.

디자인패턴?

먼저, 디자인패턴이란 소프트웨어의 개발 방법을 형식화한 것을 말한다. 건축을 할 때는 어떠한 공법을 사용해서 진행하는 것과 같다. 같은 방식으로 개발을 하게 되면 문제가 발생했을 경우, 빠르게 대응할 수 있다. 같은 방식을 써서, 그 안에서 발생하는 여러 해결책을 패턴화하여 개발의 속도를 높일 수 있기 때문에 디자인 패턴을 사용한다.

MVC

Model-View-Controller의 약자로, 가장 기본적인 디자인 패턴이다.

Model : 애플리케이션에서 사용되는 데이터 및 데이터를 처리하는 부분.
View : 사용자에게 보여지는 UI 부분
Controller : 사용자의 Action(입력)을 받아 처리하는 부분

MVC는 다음의 순서대로 동작한다.
요약 : 사용자가 Controller를 통해 Model을 바꾸면, Model을 토대로 View가 업데이트 된다.

  1. 사용자의 Action이 Controller에 먼저 들어온다.
  2. 사용자의 Action에 따라 Controller는 Model을 업데이트 한다.
  3. Controller는 여러 View 중에 화면에 나타낼 View를 선택한다.
  4. View가 Model을 이용하여 화면을 나타낸다.
    *View는 여러 개 일수 있다.

MVC의 장단점

장점 : 가장 기본적이고 단순한 패턴으로 널리 사용된다.
단점 : View의 UI 업데이트를 반영하기 위해 Model을 참조하므로 의존성이 높다.

MVP

Model-View-Presenter로 MVC와 거의 같으나, Controller 대신 Presenter가 있다. MVC의 단점을 보완하고자 나왔다.

Model : 애플리케이션에서 사용되는 데이터 및 데이터를 처리하는 부분.
View : 사용자에게 보여지는 UI 부분
Presenter : Controller가 기존에 했던 역할을 대신한다. 사용자로부터의 모든 입력값을 수집하여 Model에 전달하고, 그 결과를 다시 View에 전달한다. 즉, Model과 View를 이어준다.

MVP는 다음의 순서대로 동작한다.
요약 : 사용자의 입력 값을 Presenter가 받고 이를 Model에 보내준다. 그리고 업데이트된 Model을 다시 View에 전달한다.

  1. 사용자의 Action이 View를 통해 인입된다.
  2. View -> Presenter로 데이터를 요청하고 / Presenter -> Model에게 데이터를 요청하고 / Model -> Presenter로 데이터를 보내주고 / Presenter -> View로 데이터를 전달한다.
  3. View가 화면에 나타낸다.

MVP의 장단점

장점 : View와 Model의 의존성을 해결하였다.
단점 : 하지만 다시 View와 Presenter 사이의 의존성이 높아졌다.

MVVM

Modle-View-View Model의 약자이다.

Model : 애플리케이션에서 사용되는 데이터 및 데이터를 처리하는 부분.
View : 사용자에게 보여지는 UI 부분
View Model : MVC의 Cotroller와 MVP의 Presenter와 같은 역할을 한다. View를 나타내기 위한 Model로, View를 나타내기 위한 Model이면서 View를 나타내기 위한 데이터를 처리하는 부분.

MVVM은 다음의 순서대로 동작한다.
요약 : 사용자 입력값을 View가 받아 View Model에 전달하면 View Model이 Model로부터 데이터를 받아 업데이트하여 View에 전달한다.

  1. 사용자의 Action이 View를 통해 인입된다.
  2. View에서 받은 Action이 들어오면, Command 패턴으로 View Model에 Action을 전달한다.
  3. View model -> Model에 데이터를 요청 / Model -> View Model로 데이터를 응답한다.
  4. View Mdoel은 응답 받은 데이터를 가공하여 저장하고 View가 Data binding하여 화면에 나타낸다.

MVVM의 장단점

장점 : Command 패턴과 Data Binding 두 가지 패턴을 사용하여 구현되었기 때문에 View와 View Model 사이의 의존성을 없앴다.
단점 : 하지만 View Model 설계가 어렵다.

*Command 패턴 : 요청을 객체로 캡슐화하여 사용자가 보낸 요청을 나중에도 이용할 수 있도록 메서드 이름, 매개변수 등 요청에 필요한 정보를 저장, 로깅, 취소할 수 있는 패턴.

profile
안녕하세요!

0개의 댓글