본문 바로가기
카테고리 없음

MVC,MVP,MVVM 디자인 패턴

by Taron 2023. 8. 18.

이번엔 디자인 패턴 중 MVC, MVP, MVVM에 대해서 알아보려 합니다. 일단 먼저 디자인 패턴이 무엇 인지에 대해 알아보도록 하겠습니다.


디자인 패턴이란?

  • 소프트웨어 개발 과정에서 발견된 설계의 노하우를 축적하여 그 방법에 이름을 붙여서 이후에 재사용하기 좋은 형태로 특정 규약을 만들어서 정리한 것입니다.
  • 표준화된 방법을 사용하다 보니 개발자들간의 협업 또한 수월해지고 각 역할을 나누어놨기 때문에 유지보수하기도 수월하다는 장점이 있습니다.

Presentation Logic

  • 화면상의 디자인 구성을위한 로직을 일컫는 말입니다.

Business Logic

  • 원하는 값은 얻기 위해 사용자 눈에 보이지 않는 내부 로직을 일컫는 말입니다.

MVC (Model View Controller) 패턴

  • MVC 디자인 패턴은 Model, View, Controller의 약자로 어플리케이션을 3개의 측면으로 분리하여 개발하는 디자인 패턴입니다.
  • Model
    • 어플리케이션에서 사용되는 데이터와 그 데이터를 처리하는 부분
    • 데이터, 비즈니스 로직, 서비스 클라이언트 등으로 구성되어있습니다.
  • View
    • 사용자에게 보여지는 UI 부분
  • Controller
    • View를 나타내기 위한 데이터를 처리하는 부분 
  • 동작방식
    • Controller 가 사용자의 입력을 받고 Update가 필요한지 Model에 확인합니다.
    • Model 이 업데이트 필요 여부 판별
    • 업데이트가 필요한 경우 Model 이 View에게 알립니다.
    • View는 Model로부터 업데이트 이벤트를 받고.
    • Model에게 필요한 데이터를 요청합니다.
    • Model 은 필요한 데이터를 View에게 리스폰스 합니다.
    • View는 필요한 데이터를 수신받아 View를 갱신합니다
  • 장점
    • 유닛테스트에서 View는 테스트할 부분이 없기 때문에 쉽게 Model만 테스트 가능합니다.
    • 개발자라면 누구나 쉽게 파악 가능합니다.
  • 단점
    • Model과 View 사이에 의존성 발생해 앱이 커지고 복잡해질수록 유지보수가 힘들어집니다.
  • MVC 패턴은 작은 프로젝트에 적합한 디자인 패턴이라 할 수 있습니다.

MVP (Model View Presenter)  패턴

 

  • MVC에서 파생된 패턴으로 기존 MVC 패턴에서 Model과 View 간의 의존성 때문에 복잡해지는 단점을 보완해 Model과 View 간의 의존성이 없는 패턴입니다.
  • MVP 패턴에서 Model과 View는 MVC와 같은 용도로 사용됩니다.
  • Presenter
    • Presenter는 view와 서로 완전히 분리되어 인터페이스를 통해 통신합니다.
    • 이 방식은 MVC 보다 단위테스트가 훨씬 쉬워집니다.
  • 동작 방식
    • MVP 패턴에서는 MVC와 다르게 사용자의 입력을 View가 받습니다.
    • View는 Presenter에게 작업을 요청합니다.
    • Presenter에서 필요한 데이터를 Model에 요청합니다.
    • Model 은 요청한 데이터를 응답합니다.
    • Presenter은 View에게 데이터를 응답합니다.
    • View는 Presenter로부터 받은 데이터를 화면에 출력합니다.
  • 장점
    • MVP패턴은 인터페이스를 통해 통신하기 때문에 MVC의 단점으로 지적되었던 View와 Model 사이의 의존성이 없습니다.
  • 단점
    • 앱이 복잡해질수록 Presenter와 View에 의존성이 강해집니다.

MVVM (Model View ViewModel)

  • MVC에서 파생된, Model과 View 간의 의존성뿐만 아니라 Controller과 View간의 의존성도 고려하여 각 구성 요소가 독립적으로 작성되고 테스트될 수 있도록 설계된 아키텍처 패턴입니다
  • MVC에서 파생되어 Model과 View는 차이가 없습니다.
  • ViewModel
    • View를 표현하기 위해 만들어진 View를 위한 Model입니다.
    • View와는 Binding을 하여 연결 후 View에게서 입력을 받고 또한 View를 업데이트합니다
  • 동작방식
    • View가 입력을 받고 ViewModel에게 입력을 전달합니다.
    • View Model 은 비지니스 로직을 수행합니다.
    • View Model 은 모델에게 데이터를 요청합니다.
    • Model 은 요청에 대한 데이터를 응답합니다.
    • View Model 은 응답받은 데이터를 가공하고 저장합니다.
    • VIew는 Data Binding을 통해 변경된 데이터를 보여줍니다.
  • 장점
    • View와 Model 이 독립성을 유지할 수 있습니다.
    • 독립성을 유지하기 때문에 효율적인 유닛테스트가 가능합니다.
    • view와 ViewModel 이 데이터 바인딩 하기 때문에 보일러 플레이트 코드가 적습니다.
  • 단점
    • 간단한 프로젝트에는 ViewModel 설계가 힘듭니다.
    • 표준화된 틀이 존재하지 않아 사람마다 이해가 다릅니다.
  • MVVM 패턴은 작은 프로젝트에 설계가 힘들어서 큰 프로젝트에 적합합니다.

댓글