MVC MVP MVVM 패턴

MVC 패턴

post_thumbnail

  • 각 Model, View, Controller를 뜻함
  • 사용자가 컨트롤러를 조작해 모델(데이터)를 가져오고, 이를 바탕으로 View(시각정보)를 제어
    • Ex) 함수를 이용해 게임머니 데이터를 불러와 게임 화면 UI에 적용
  • 이론적으로는 각 요소들이 서로 분리되어 각자의 역할에 집중할 수 있는 패턴
모델 Model 뷰 View 컨트롤러 Contrroller
어플리케이션의 정보 또는 데이터
1. 사용자가 편집을 원하는 모든 데이터를 보유해야 함
2. 뷰나 컨트롤러에 대해 일체 단절된 상태
3. 변경이 발생하면 처리 방법을 구현해야 함
인터페이스 요소
1. 모델의 정보를 저장하면 안됨
2. 모델이나 컨트롤러로부터 독립
3. 변경이 발생하면 처리 방법을 구현해야 함
사용자의 입력을 받고 처리하는 부분
데이터와 인터페이스의 브릿지 역할
1. 모델과 뷰로 접근이 가능해야 함
2. 모델과 뷰의 변경을 모니터링해야 함
  • MVC 순서
    1. Controller로 사용자의 입력이 들어옵니다.
    2. Controller는 Model을 데이터 업데이트 및 불러오고
    3. Model은 해당 데이터를 보여줄 View를 선택해서 화면에 보여주게 됩니다.

MVC 패턴의 한계

  • View와 Model이 서로 의존적
  • 현실적으로 각 요소가 분리될 수 없음
    • 데이터가 변경되면 이를 제어할 함수를 수정하고, 인터페이스에 적용해야 함
    • UI가 변경되면 이를 제어할 수 있도록 함수를 수정하고, 경우에 따라 데이터를 추가해야 함
    • 결국은 컨트롤러 즉 함수가 방대해지고 사실상 아무것도 아닌 하드 코딩이 됨

MVP 패턴

post_thumbnail

  • MVC와 동일하나 사용자 입력을 View로 받음
  • Presenter라는 새로운 요소가 생김
    • View에서 요청한 정보를 Model로 부터 가공해서 View로 전달하는 부분
  • View와 Model의 의존성이 사라짐
  • 그러나 View와 Presenter의 의존성이 강해짐
  • MVP 순서
    1. View로 사용자의 입력이 들어옵니다.
    2. View는 Presenter에 작업 요청을 합니다.
    3. Presenter에서 필요한 데이터를 Model에 요청 합니다.
    4. Model은 Presenter에 필요한 데이터를 응답 합니다.
    5. Presenter는 View에 데이터를 응답 합니다.
    6. View는 Presenter로부터 받은 데이터로 화면에 보여주게 됩니다.

MVVM 패턴

post_thumbnail

  • MVP와 동일, 사용자 입력을 View로 받음
  • View Model가 Presenter 대신 생김
    • View를 표현하기 위해 만든 Model
  • View Model을 중개자로 두고 View와 Model이 서로 독립적으로 만듦
    • CommandData Biinding을 이용하기 때문
  • 뷰에서 서로 다른 두 모델의 데이터를 활용한 데이터가 필요하다면
    • 뷰에서 모델의 값을 직접 조작해서 사용하지 않음
    • 뷰 모델에서 두 모델의 데이터를 가공하고 뷰로 넘겨줌
    • 뷰에서는 오직 UI만 다루도록 해야 함
  • MVVM 순서
    1. View에 입력이 들어오면 Command 패턴으로 ViewModel에 명령을 합니다.
    2. ViewModel은 필요한 데이터를 Model에 요청 합니다.
    3. Model은 ViewModel에 필요한 데이터를 응답 합니다.
    4. ViewModel은 응답 받은 데이터를 가공해서 저장 합니다.
    5. View는 ViewModel과의 Data Binding으로 인해 자동으로 갱신 됩니다.

출처