[매일 개념] 디자인 패턴 - MVC, MVP, MVVM

DongHyeon·2022년 6월 26일
0

매일 개념

목록 보기
7/28

MVC

구조

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

동작 순서

  1. 사용자의 Action들이 Controller에 들어옴.
  2. Controller는 사용자의 Action을 확인하고, Model을 업데이트
  3. Controller는 Model을 나타내줄 View를 선택
  4. View는 Model을 이용하여 화면을 나타냄

특징

  • Controller는 여러개의 View를 선택할 수 있는 1:n 구조
  • Controller는 View를 선택할 뿐 직접 업데이트 하지 않음

장점

  • 단순함, 그렇기 때문에 가장 많이 사용됨

단점

  • View와 Model 사이의 의존성이 높음, 그렇기 때문에 규모가 커질수록 복잡해지고 유지보수가 어려움

MVP

구조

  • Model + View + Presenter를 합친 패턴. Model과 View는 MVC패턴과 동일하고, Controller대신 Presenter가 존재.
    • Model : 어플리케이션에서 사용되는 데이터와 그 데이터를 처리하는 부분
    • View : 사용자에서 보여지는 UI 부분
    • Controller : View에서 요청한 정보로 Model을 가공하여 View에 전달


동작

  1. 사용자의 Action들이 View를 통해 들어옴.
  2. View는 데이터를 Presenter에 요청
  3. Presenter는 Model에 데이터를 요청
  4. Model은 Presenter에서 요청받은 데이터를 응답
  5. Presenter는 View에 데이터를 응답
  6. View는 Presenter가 응답한 데이터를 이용해 화면에 나타냄

특징

  • Presenter는 View와 Model의 인스턴스를 가지고 있어 둘을 연결하는 역할
  • Presenter와 View는 1:1 관계

장점

  • View와 Model의 의존성이 없음. MVC 패턴의 단점이었던 의존성을 해결
    (Presenter를 통해서만 데이터를 전달 받기 때문)

단점

  • 어플리케이션의 복잡해질수록 View와 Presenter 사이의 의존성이 높음.

MVVM

구조

  • Model + View + View Model을 합친 패턴. Model과 View는 다른패턴과 동일
    • Model : 어플리케이션에서 사용되는 데이터와 그 데이터를 처리하는 부분
    • View : 사용자에서 보여지는 UI 부분
    • Controller : View를 표현하기 위해 만든 View를 위한 Model. View를 나타내 주기위한 Model이자 View를 나타내기 위한 데이터 처리를 하는 부분


동작

  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하여 화면을 나타냄

특징

  • Command 패턴과 Data Binding 두 가지 패턴을 사용
  • View와 View Model 사이의 의존성을 없앰

장점

  • View와 Model의 의존성이 없음. View와 View Model 사이의 의존성 또한 없음.
    각각의 부분이 독립적이기 때문에 모듈화 하여 개발

단점

  • View Model 의 설계가 쉽지 않음

0개의 댓글