[Android] 디자인 패턴 (MVC/MVP/MVVM)

김민주·2022년 10월 15일
0

Android

목록 보기
4/21


디자인패턴


MVC -> MVP -> MVVM



MVC

  • Model : app에서 data및 data를 처리하는 부분 (POJO클래스, db, Server)
  • View : UI (Activity, Fragment)
  • Controller : 사용자의 INPUT을 처리하는 부분 (Activity, Fragment)

  • 특징
  1. View가 Model을 이용하여 업데이트 시 M-V 사이에 의존성
  2. Controller가 안드로이드에 종속됨 (테스트 어려움)
  3. 코드가 컨트롤러로 모여 액티비티가 커짐

  • 동작
  1. 사용자의 모든 input이 Controller에서 전달된 후
  2. Controller는 입력에 맞는 Model를 UPDATE
  3. Model은 업데이트한 data를 보여줄 View 선택하여 화면에 보여줌


MVP

  • Model
  • View: UI (Activity, Fragment)
  • Presenter : View와 Model 의 다리, ui로직과 비즈니스로직 분리

  • 특징
  1. Controller 대신 Presenter 가 제어하면서 데이터흐름이 단일해짐
  2. View와 Presenter의 1대1 대응 (의존성 커짐)
  3. Model과 View간의 의존성이 없다 (테스트 쉬움)
  4. Presenter가 시간이 지날수록 비즈니스 로직이 모여 유지보수가 어려움

  • 동작
  1. 사용자의 모든 input이 view로 전달된 후
  2. Presenter가 입력에 맞는 Model를 UPDATE
  3. Model은 업데이트한 data를 보여줄 View 선택하여 UPDATE



MVVM

  • Model
  • View
  • ViewModel

ViewModel

: 액티비티가 비대해지는 것을 막기 위해 사용됨
: View에 나타날 data를 관리함. 이 data는 Observerable data,
  View가 이 data를 요청하여 업데이트함


  • 특징
  1. View -> View Model -> Model 순의 참조가 이루어짐 (분리개발가능)
  2. M-V 과 VM-V 사이의 의존성이 없음 (테스트 쉬움)

  • 동작
  1. 사용자의 모든 input이 view로 전달된 후
  2. ViewModel은 입력에 맞는 로직을 처리한 후 View에 데이터를 전달
  3. View는 ViewModel을 선택 후 바인딩하여 UPDATE
  4. Model이 변경되면 해당 ViewModel을 이용하는 View가 자동 UPDATE





profile
𝐃𝐨𝐧'𝐭 𝐛𝐞 𝐚 𝐩𝐫𝐨𝐜𝐫𝐚𝐬𝐭𝐢𝐧𝐚𝐭𝐨𝐫💫

0개의 댓글