ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • MV* 패턴(MVC, MVP, MVVM)
    디자인 패턴 2022. 7. 6. 00:01
    728x90

    MV*(MVC, MVP, MVVM 비교)

    MVC

    MVC 패턴은 Model + View + Controller를 합친 용어입니다.

    1) 구조

    Model + View + Controller란?

    • Model : 어플리케이션에서 사용되는 데이터와 그 데이터를 처리하는 부분입니다.
    • View : 사용자에서 보여지는 UI 부분입니다.
    • Controller : 사용자의 입력(Action)을 받고 처리하는 부분입니다.

    2) 동작

    MVC패턴의 동작 순서는 아래와 같습니다.

    1. 사용자의 Action들이 Controller에 들어옵니다.
    2. Controller는 사용자의 Action을 확인 후, Model을 업데이트합니다.
    3. Controller는 Model을 나타낼 View를 선택합니다.
    4. View가 Model을 이요하여 화면에 나타냅니다.

    3) 특징

    • controller 는 여러개의 View를 선택할 수 있는 1:N 구조입니다.
    • controller 는 View를 선택할 뿐 직접 업데이트 하진 못합니다.
      • View는 Controller를 알지 못합니다.

    4) 장점

    • 가장 단순하여 널리 사용되고 있는 패턴입니다.
    • 서로 역할이 분리되어 각자의 역할에 집중할 수 있게 개발합니다.
      • 유지보수성, 확장성 그리고 유연성이 증가하고, 중복 코딩이라는 문제점이 사라집니다.

    5) 단점

    • View와 Model 사이의 의존성이 높습니다.
      • 어플리케이션이 커질 수록 복잡해지고 유지보수가 어렵게 만들 수 있습니다.
    • 사용자 input, 처리, 화면에 뿌리는 것 모두 Controller 가 담당 → Controller가 점점 더 비대해짐 → 이 것을 해결하기 위해 MVP가 등장합니다.

    MVP

    MVP 패턴은 Model + View + Presenter를 합친 용어입니다. Model + View는 MVC 패턴과 동일하고 Controller대신 Presenter가 존재합니다.

    1) 구조

    Model + View + Presenter란?

    • Model : 어플리케이션에서 사용되는 데이터와 그 데이터를 처리하는 부분입니다.
    • View : 사용자에서 보여지는 UI 부분입니다.
    • Presenter : View에 요청한 정보를 Model로 부터 가공하여 View에 전달해 주는 부분입니다.

    2) 동작

    MVP 패턴의 동작 순서는 아래와 같습니다.

    1. 사용자의 Action이 View로 들어옵니다.
    2. View는 Presenter에게 작업을 요청합니다.
    3. Presenter에서 필요한 데이터를 Model에게 요청합니다.
    4. Model은 Presenter에게 필요한 데이터를 응답합니다.
    5. Presenter는 View에게 데이터를 응답합니다.
    6. View는 Presenter에게 받은 데이터를 화면에 보여줍니다.

    3) 특징

    • Model과 View는 MVC와 동일하지만 사용자 입력은 View에서 받고, Model과 View는 각각 Presenter와 상호 작용됩니다.
    • View와 Model은 서로를 알 필요가 전혀 없고, Presenter만 알면 됩니다.
      • MVC의 단점인 View와 Model의 의존성이 사라집니다.

    4) 장점

    • View와 Model의 의존성이 없다는 것 입니다.
      • Presenter를 통해서만 데이터를 전달 받기 때문입니다.

    5) 단점

    • View와 Model의 의존성이 없는 대신 View와 Presenter가 1:1로 높은 의존성이 생깁니다.
    • 이런 단점을 해결할 또 다른 프레임 워크 → MVVM

    MVVM

    MVVM패턴은 Model + View + View Model을 합친 용어입니다. 마찬가지로 Model과 View는 다른 패턴과 동일합니다.

    1) 구조

    • Model : 어플리케이션에서 사용되는 데이터와 그 데이터를 처리하는 부분입니다.
    • View : 사용자에서 보여지는 UI 부분입니다.
    • View Model : View를 표현하기 위해 만든 View를 위한 Model입니다.
      • View를 나타내주기 위한 Model이자 View를 나타내기 위한 데이터를 처리하는 부분입니다.

    2) 동작

    MVVM 패턴의 동작 순서는 아래와 같습니다.

    1. 사용자의 Action들은 View를 통해 들어오게 됩니다.
    2. View에 Action이 들어오면, Command 패턴으로 View Model에 Action을 전달하게 됩니다.
    3. View Model은 Model에게 데이터를 요청합니다.
    4. Model은 View Model에게 요청받은 데이터를 응답합니다.
    5. View Model은 응답 받은 데이터를 가공하여 저장합니다.
    6. View는 View Model과 Data Binding하여 화면을 나타냅니다.

    3) 특징

    MVVM패턴은 두가지 디자인 패턴을 사용합니다.

    1. Command패턴
    1. Data Binding패턴

    이 두가지 패턴으로 인해 View와 ViewModel은 의존선이 완전히 사라지게 됩니다.

    MVP와 마찬가지로 View에서 입력이 들어옵니다. 입력이 들어오면 Command 패턴을 통해 ViewModel에 명령을 내리게 되고 Data Binding으로 인해 ViewModel의 값이 변화하면 바로 View의 정보가 바뀝니다.

    VIew Model과 View는 1:n 관계입니다.

    4) 장점

    • MVVM패턴은 VIew와 Model사이의 의존성이 없습니다. 또한 Command 패턴과 Data Binding을 사용하여 View와 View Model 사이의 의존성 또한 없앤 디자인 패턴입니다.
    • 각각의 부분은 독립적이기 때문에 모듈화 하여 개발할 수 있습니다.

    5) 단점

    • View Model의 설계가 쉽지 않습니다.
    • Data Binding패턴을 통해 View를 변경할 때 많은 코드의 작성을 필요로 하므로 간단한 View나 로직을 만들 때에도 하는 일에 비해 많은 코드 작성이 필요합니다.

    참고

    https://beomy.tistory.com/43

    https://github.com/kyu9341/TIL/blob/main/DesignPattern/MV*/MV*.md

    728x90

    댓글

Designed by Tistory.