웹, 앱 개발 시에는 요구되는 여러 아키텍처 패턴들이 있다.
- MVC (Model-View-Controller)
- MVP (Model-VIew-Presenter)
- MVVM (Model-View-ViewModel)
- MVI (Model-View-Intent)
- 기타
이름에는 각각 M(Model)과 V(View)를 공통적으로 가지고 있는데, 이들은 다음과 같은 기능을 수행한다.
- Model: 웹/앱에서 사용되는 데이터와 그 데이터를 처리하는 부분 (생성 or 업데이트)
- View: 사용자에게 보여지는 UI 부분
프로그램의 Presentation logic*, Business logic* 을 구현할 때에는 데이터와 UI가 필수적이기 때문에
당연히 M-V 사이의 의존성이 생길 수밖에 없다.
|
이러한 로직들이 크고 복잡해지면 프로그램의 의존성은 높아질 수 있으며,
유지보수 하는데에 어려움을 느낄 수 있다.
이러한 문제들을 해결하기 위해 만들어진 것이 바로 위에서 설명한 아키텍처 패턴들이다.
해당 패턴들은 M-V 사이의 관계를 처리하는 방법에 따라 구분된다.
MVC
"Model-View-Controller"
프로그램을 역할에 따라 Model, View, Controller 로 나누어 설계한 아키텍처 패턴
1) 구조
- Model: 웹/앱에서 사용되는 데이터와 그 데이터를 처리하는 부분 (생성 or 업데이트)
- View: 사용자에게 보여지는 UI 부분
- Controller: 사용자의 입력(Action)을 받고 처리하는 부분
2) 동작
- 사용자의 모든 Action들은 Controller에 들어오게 된다.
- Controller는 사용자의 Action을 확인하고, Model을 업데이트한다.
- Controller는 Model을 나타낼 View를 선택한다.
- View는 Model을 이용하여 화면을 나타낸다.
3) 특징
- Controller는 여러 개의 View를 선택할 수 있는 1:N 구조이다.
- Controller는 View를 직접 선택할 뿐 업데이트 하지 않는다
※ MVC에서 View가 업데이트 되는 방법 |
3) 장점
MVC 패턴의 장점은 보편적으로 사용되고 있는 아키텍처 패턴이라는 점에 걸맞게 가장 단순하다.
4) 단점
- MVC 패턴의 단점은 Model-View 사이의 의존성이 높다는 점이다.
- 둘 사이의 의존성이 높아지면 프로그램의 유지보수가 어려워질 수 있다.
MVP
"Model-View-Presenter"
MVC에서 파생된 Model - View 간 의존성이 없는 아키텍처 패턴
1) 구조
- Model: 웹/앱에서 사용되는 데이터와 그 데이터를 처리하는 부분 (생성 or 업데이트)
- View: 사용자에게 보여지는 UI 부분
- Presenter: View에서 요청한 정보로 Model을 가공하여 View에 전달해주는 부분 (Model-View 사이의 매개체 역할)
2. 동작
- 사용자의 Action은 View를 통해 들어온다.
- View는 데이터를 Presenter에 요청한다.
- Presenter은 Model에게 데이터를 요청한다.
- Model은 Presenter에서 요청받은 데이터를 응답한다.
- Presenter은 VIew에게 데이터를 응답한다.
- View는 Presenter로부터 응답받은 데이터를 이용하여 화면을 나타낸다.
3. 특징
- Presenter과 View는 1:1 구조이다.
- Presenter은 View, Model의 인스턴스를 가지고 있어서 둘을 연결하는 매개체 역할을 수행한다.
4. 장점
MVP 패턴의 장점은 Model-View 사이의 의존성이 없다는 것이다.
따라서 MVC의 단점을 보완한 아키텍처 패턴임을 알 수 있다.
5. 단점
- View와 Presenter가 1:1 구조이기 때문에 서로 간의 의존성이 커진다.
- 구현에 필요한 클래스의 수가 많아진다.
MVVM
"Model-View-View Model"
MVC 패턴에서 Controller을 빼고 ViewModel을 추가한 아키텍처 패턴
1) 구조
- Model: 웹/앱에서 사용되는 데이터와 그 데이터를 처리하는 부분 (생성 or 업데이트)
- View: 사용자에게 보여지는 UI 부분
- ViewModel: View를 표현하기 위해 만든 View를 위한 Model
2) 동작
- 사용자의 Action은 View를 통해 들어온다.
- View에 Action이 들어오면, Command 패턴으로 View Model에 Action을 전달한다. 2
- View Model은 Model에게 데이터를 요청한다.
- Model은 View Model에게 요청받은 데이터를 응답한다.
- View Model은 응답 받은 데이터를 가공하여 저장한다.
- View는 View Model과 Data Binding하여 화면을 나타낸다. 3
3) 특징
- Command 패턴, Data Binding 두 가지 패턴을 사용한다.
- Command 패턴, Data Binding 을 이용하여 View-View Model 사이의 의존성을 없앴다.
- View Model과 View는 1:N 구조이다.
4) 장점
- View-View Model 사이의 의존성이 없다.
- Command 패턴, Data Binding 을 이용하여 View-View Model 사이의 의존성이 없다.
- 의존성이 낮아 테스트, 유지보수가 용이하다.
- 중복되는 코드를 모듈화할 수 있다.
5) 단점
View Model을 설계하는 것이 복잡하다.
'Study' 카테고리의 다른 글
[STUDY] 스프링 입문 기록(2) - 코드로 배우는 스프링부트, 웹 MVC, DB 접근 기술 (0) | 2023.02.26 |
---|---|
[STUDY] 스프링 입문 기록(1) - 코드로 배우는 스프링부트, 웹 MVC, DB 접근 기술 (0) | 2023.02.23 |
[STUDY] JAVA 웹 개발 코스 - 개발 언어 (0) | 2022.06.30 |
[STUDY] TCP, UDP와 HTTP 프로토콜 (0) | 2022.06.20 |
[JAVA] 동기, 비동기와 멀티스레딩 (0) | 2022.06.17 |