본문 바로가기
App

디자인 패턴

by 남행비 2023. 12. 17.

 

디자인 패턴이란?

디자인 패턴은 공통적으로 발생하는 문제에 대해 자주 쓰이는 설계 방법을 정리한 패턴입니다.

개발자 간 소통이 원활해지고, 구조 파악이 용이하다는 등의 장점이 있습니다.

 

디자인 패턴 종류

출처: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)

 

 

출처: https://www.geeksforgeeks.org/mvc-model-view-controller-architecture-pattern-in-android-with-example/?ref=lbp

 

MVC (Model View Controller) Architecture Pattern in Android with Example - GeeksforGeeks

A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.

www.geeksforgeeks.org

 

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 패턴
  1. 단순하고 직관적으로 구조를 파악하기가 가능합니다.
  2. 기능별로 코드를 분리하여 하나의 디렉토리에 코드를 모으는 것을 방지하여 가독성과 코드 재 사용성이 좋습니다.
  1. 핵심 비즈니스 로직이 컨트롤러에 집중되어 있어서 코드 유지 관리에 어려워집니다.
  2. View와 Model의 의존성으로 어플리케이션이 커질수록 복잡도가 높아집니다
MVP 패턴
  1. 애플리케이션의 모델, 뷰, 프리젠터 레이어가 분리되어 있어 코드 유지 및 테스트가 용이합니다.
  1. View와 Presenter가 1:1 관계이기에 서로간의 의존성이 높아집니다.
MVVM 패턴
  1. View와 Model 사이의 의존성이 없다
  2. Command 패턴 혹은 데이터 바인딩을 사용하여 View와 ViewModel 사이의 의존성이 없다.
  3. 프로젝트 파일을 유지 관리하고 쉽게 변경 할 수 있다.
  1. View와 Model을 설계하는데 쉽지 않다.
  2. 이 디자인 아키텍처 패턴은 소규모 프로젝트에는 적합하지 않습니다.
  3. 데이터 바인딩 로직이 너무 복잡하면 애플리케이션의 디버깅이 어려워 질 수 있음.

 

'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