MVC , MVP, MVVM 패턴

서동수·2022년 7월 29일
0

MVC

Model: 데이터를 저장
View: 데이터를 표현, 유저와의 인터랙션 담당
Controller: Model, View 구성요소 간의 인터페이스

1. 컨트롤러로 모든 Input이 들어옴
2. 컨트롤러는 모델을 업데이트
3. 업데이트 결과에 따른 뷰 선택 (업데이트는 직접하지 않음)
4. 뷰를 업데이트하기위해
	- 뷰가 모델을 직접 이용 업데이트
    - 모델에서 뷰에 알림하여 업데이트
	- 뷰가 모델의 변화를 감지해서 업데이트

뷰를 업데이트하기 위해서 모델과 뷰사이에 의존성이 존재하게되고 앱이 커지면 유지보수가 어려워 진다.

MVP

Model: 데이터 담당
View: UI 담당
Presenter: 뷰와 모델의 인스턴스를 토대로 매개체 역할

1. 모든 Input은 뷰로 전달
2. 프리젠터는 Input에 해당하는 모델을 업데이트
3. 모델 업데이한 결과로 뷰 업데이트
4. 프레젠터는 뷰와 1:1 관계로 뷰를 참조

프레젠터가 모델과 뷰사이에서 매개체 역할을 해주기 때문에 모델 뷰 사이에 의존성이 없다.
그렇지만 프레젠터와 뷰의 의존성이 강해지는 단점을 가졌다.

MVVM

Model: 데이터와 데이터 처리
View: UI구성, Model을 UI로 표현
View-Model: Input을 프리젠테이션 로직 처리 (VM : V = 1 : n)

1. 뷰로 모든 Input 전달
2. 뷰모델에서 Input에 대한 프레젠테이션 로직을 처리
3. 뷰에 데이터 전달
4. 뷰는 뷰모델을 선택해 데이터 바인딩하고 업데이트 처리
5. 모델이 변경되면 뷰모델을 이용하는 뷰는 자동으로 업데이트
6. 뷰는 뷰모델에 데이터 바인딩하여 화면 업데이트

모델과 뷰 사이의 의존성이 없고 , MVP패턴처럼 V-VM의 관계가 1:1이 아니므로 독립적이게 되어 둘 사이의의존성도 없는 특징을 가졌다. 그렇지만 뷰모델 설계가 어렵다.

  • Command 패턴: 행위(메서드)를 캡슐화 하는 패턴으로 여러 기능을 실행할 수 있는 재상용 높은 클래스를 설계하는 패턴
  • DataBinding: 공급자와 소비자의 데이터 원본이 함께 바인딩하고 동기화 하는 기술
profile
devLog

0개의 댓글