디자인 패턴이란?
디자인 패턴은 공통적으로 발생하는 문제에 대해 자주 쓰이는 설계 방법을 정리한 패턴입니다.
개발자 간 소통이 원활해지고, 구조 파악이 용이하다는 등의 장점이 있습니다.
디자인 패턴 종류
출처:https://adjh54.tistory.com/60
1. MVC
MVC는 Model-View-Controller로 애플리케이션을 세 가지의 계층으로 구분한 방법론을 의미합니다.
- 사용자가 처음 페이지를 출력하는 경우 Controller로 요청이 발생하고 Model에서 데이터를 가져와서 그 정보를 바탕으로 시각적 표현인 View를 그려주는 아키텍처 패턴을 의미합니다.
MVC 패턴의 전체적인 흐름
사용자의 Action → Controller → Model → Controller → View → Controller → View → 사용자 화면
MVC 패턴의 상세적인 흐름
1. 사용자의 Action을 Controller에서 받습니다. (사용자 Action → Controller)
2. Controller에서는 이를 확인하고 Model을 업데이트 수행합니다.(Controller → Model)
3. 수정된 값을 Controller로 반환합니다.(Controller ← Model)
4. Controller에서는 View의 수정합니다.(View ← Controller)
5. 사용자에게 변경된 화면을 반환합니다.(사용자 Action ← View)
2. MVP
MVP는 Model-View-Presenter로 애플리케이션을 세 가지의 계층으로 구분한 방법론을 의미합니다
UI(View)와 모델(Model)을 분리하고 서로 간에 상호작용을 'Presenter'에서 그 역할을 해줌으로써 서로 간의 의존성을 최소화하는 특징이 있는 아키텍처 패턴이다.
MVP 패턴의 전체적인 흐름
전체 Flow - 사용자의 Action → View → Presenter → Model → Presenter → View → 사용자
MVP 패턴의 상세적인 흐름
1. 사용자의 Action을 View에서 받습니다. (사용자 Action → View)
2. View에서는 Presenter로 요청을 합니다. (View → Presenter)
3. Presenter에서는 Model로 데이터를 요청합니다(Presenter → Model)
4. Model은 Presenter로 데이터를 전달합니다.(Model → Presenter)
5. Presenter는 View에게 데이터를 전달합니다.(Presenter → View)
6. View에서 사용자로 화면을 보여줍니다.(View → 사용자)
3. MVVM
MVVM은 Model-ViewModel-Model로 애플리케이션을 세 가지의 계층으로 구분한 방법론을 의미합니다.
View는 ViewModel을 알고 있지만, ViewModel은 View를 알지 못합니다.
해당 모델에서는 ViewModel은 Model을 알고 있지만, Model은 ViewModel을 알지 못합니다
MVVM 패턴의 전체적인 흐름
전체 흐름 - 사용자 Action → View → ViewModel → Model → ViewModel → View → 사용자
MVVM 패턴의 상세적인 흐름
1. 사용자가 입력한 값이 View를 통해 들어옵니다. (사용자 → View)
2. View에 입력값이 들어오면 ViewModel로 입력 값을 전달합니다. (View → ViewModel)
3. 전달받은 ViewModel은 Model에게 데이터 요청을 보냅니다. (ViewModel → Model)
4. Model은 ViewModel에게 요청받은 데이터를 Response 합니다(ViewModel ← Model)
5. ViewModel은 그 값을 처리하여 내부에 저장합니다.
6. View는 ViewModel과의 ‘데이터 바인딩’을 통해 화면상에 표출합니다.(View ↔︎ ViewModel)
패턴들의 장점 및 단점
패턴 | 장점 | 단점 |
MVC 패턴 |
|
|
MVP 패턴 |
|
|
MVVM 패턴 |
|
|
'App' 카테고리의 다른 글
Hilt (1) | 2024.02.15 |
---|---|
클린 아키텍처 (0) | 2024.02.14 |
firebase(파이어베이스)란? (1) | 2023.12.17 |
Life Cycle(Android Activity Lifecycle) (1) | 2023.12.15 |
Native Application과 Cross-Platform Application의 차이점 (0) | 2023.12.15 |