저번에 봤던 MVC에 대해 심화적으로 공부하고 추가적으로 MVP, MVVM에 대하여 찾아보았다
<MVC>
MVC는 Model-View-Controller를 합친 용어이며 어플리케이션을 세 가지 구성 요소로 분리하여 개발하는 방법을 제공한다. 가장 많이 사용되는 디자인 패턴 중 하나이며 사용자가 컨트롤러를 통해 모델을 변화시키면 뷰가 업데이트된다.
- Model 어플리케이션의 데이터와 비즈니스 로직을 나타냄
- View 사용자 인터페이스를 나타냄
- Controller 모델과 뷰 사이의 중재자 역할을 함
→ 여기서 비즈니스 로직이란 소프트웨어 시스템이 수행해야 하는 비즈니스 요구사항을 정의하는 부분을 뜻한다.
장점
- 개발속도를 병렬적으로 가속화시킬 수 있음
- 여러개의 뷰를 모델에 빌드할 수 있음
- 단순하고 직관적임
- 어플리케이션을 세 가지 구성 요소로 분리하여 개발하므로 각각의 구성요소에만 집중할 수 있으며 가독성과 코드 재사용이 증가함
- 변경사항이 전체 모델에 영향을 주지 않음
단점
- 뷰와 모델 사이의 의존도가 높기 때문에 어플리케이션이 복잡해질수록 모델과 뷰의 관계가 복잡해지며 유지보수 또한 어려움
<MVP>
MVP는 Model, View, Presenter가 합쳐진 형태이다. 컨트롤러는 사라지고 그 기능을 프리젠터가 대신한다. 프리젠터는 컨트롤러의 역할과 뷰의 인터페이스를 포함한다고 생각하면 된다.
MVC 패턴은 모델과 뷰가 서로 연결되어 의존도가 높고, 컨트롤러가 모델과 뷰를 선택하면 뷰는 모델을 바탕으로 UI를 그린다. 반면, MVP 패턴은 모델과 뷰가 분리되어 있으므로 프리젠터를 통해서만 상태나 변화를 나타낸다.
- Model 어플리케이션의 데이터와 비즈니스 로직을 나타냄
- View 사용자 인터페이스를 나타냄
- Presenter 뷰로부터 사용자 입력을 받아 모델을 갱신하고, 모델의 변경사항을 뷰에 반영함. 프리젠터는 뷰와 모델사이의 중재자 역할을 한다고 볼 수 있음
장점
- 뷰와 모델의 의존성이 없음
- 독립적이기 때문에 테스트하기 쉬움
단점
- 뷰와 모델 사이의 의존도가 높은것은 해결되었지만 뷰와 프리젠터 사이의 의존성을 높게 가지게 됨(1:1비율)
<MVVM>
MVVM은 Model, View, ViewModel를 합친 약자이며 어플리케이션의 비즈니스 로직과 프리젠테이션 로직을 UI로 명확하게 분리하는 패턴이다. 여기서 프리젠테이션 로직이란 화면상의 디자인 구성을 위한 로직을 일컫는 말로써, 비즈니스 로직들을 어떻게 사용자에게 보여줄지에 대한 로직이다.
- Model 어플리케이션의 데이터와 비즈니스 로직을 나타냄
- View 사용자 인터페이스를 나타냄
- ViewModel 뷰와 모델 사이에서 중재자 역할을 함. 뷰에서 발생하는 이벤트를 감지하고, 해당 이벤트에 맞는 비즈니스 로직을 수행한다. 또한 모델과 상호작용하여 데이터를 가져오거나 업데이트하고 뷰에서 데이터를 업데이트하는 역할을 하며, 뷰에 표시할 데이터를 가공하여 제공하는 역할을 한다.
장점
- 뷰와 모델의 의존성이 없음
- 독립적이기 때문에 테스트하기 쉬움
- 뷰와 뷰모델이 1:n관계이므로 중복되는 로직을 모듈화하여 코드를 재사용할 수 있음
단점
- 뷰모델의 설계가 쉽지 않음
'Spring' 카테고리의 다른 글
GDSC TUK 스프링부트 4주차 (0) | 2024.05.27 |
---|---|
GDSC TUK 스프링부트 2주차 (0) | 2024.05.13 |
GDSC TUK 스프링부트 1주차 (0) | 2024.05.13 |