MVVM 및 MVC-MVP-MVVM 패턴

Ik·2023년 3월 29일
0

CS

목록 보기
15/27






mvvm

Model-View-ViewModel
기존의 알고있는 MVC 패턴에서 파생된 패턴으로 마찬가지로 아키텍처 디자인 패턴 중에 하나라고 생각하면 된다


Model, View는 mvc와 같지만 View Model의 경우는 View를 표현하기 위해 만든 View를 위한 Model

ViewModel

View를 나타내기 위한 데이터 처리를 하는 부분, ViewModel은 View보다는 Model에 조금 더 가깝다는 의미이며 Model에서 받은 데이터를 가공하며 View는 View Model에 가공된 데이터를 바인딩해 View에 표시한다
Model, View의 경우는 기존의 MVC 패턴과 같지만 ViewModel의 경우는 차이점 존재한다
여기서 바인딩동기화와 유사하다 보면된다. 특정 데이터들을 묶어두고 동기화 작업을 통해 데이터를 업데이트한다




vs MVC 패턴

MVC 패턴과의 차이점을 기준으로 이해를 하자면 MVC 패턴의 경우는 Controller를 통해 Client의 요청을 받고 Controller가 Model에서 데이터를 받아 View에 전달해주는 시스템


MVVM 패턴의 경우는 View가 Client의 요청을 받고 ViewModel로 전달하면 ViewModel은 Model에서 데이터를 받아 View에 표시해준다
기존의 MVC 패턴의 경우는 Client의 요청을 Controller가 받아 model에 요청하고 model은 view에 결과를 제공해준다


MVC 패턴에서는 Client의 요청을 Controller에서 받지만 MVVM 패턴의 경우는 View에서 받는다
즉, 결론적으로 요청을 받는 영역이 어디인지와 View를 통해 데이터를 표시해주는 방법 두 가지의 차이점 존재


MVC에서 Controller는 Client의 요청을 받고 요청에 따른 Model에 전달해주며 View 관련해서는 특별한 작업은 없지만 ViewModel의 경우는 View에 데이터 바인딩은 물론 이벤트 활성 등 View와 Model 둘 다 영향을 주는 느낌이다

효과

위에 내용처럼 구조와 역할이 바뀌게 된다면 MVC와는 다르게 MVVM의 경우는 View <=> Model 의존성은 상대적으로 굉장히 많이 줄어든다





MVC, MVP, MVVM

MVC => MVP => MVVM 순으로 단점을 보완하며 새로운 디자인 패턴들이 나오는 것으로 여겨진다

MVC => MVP

Model <=> View 의존도가 높아 어플리케이션이 사이즈와 유지보수 어려움이 비례하기에 의존도를 낮추고자 개선

MVP => MVVM

Present <=> View의 의존도가 높아 마찬가지로 유지보수 어려움 존재하는 문제 개선 목적






ref

0개의 댓글