Archives
Recent Posts
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Today
Total
관리 메뉴

안드로이드 개발자의 창고

[Android] MVC / MVP / MVVM 차이 본문

Computer/Android

[Android] MVC / MVP / MVVM 차이

Wise-99 2023. 9. 2. 17:57

📖 MVC

Model - View - Controller로 이루어진 패턴

출처 : https://developer.mozilla.org/ko/docs/Glossary/MVC

 

Model

  • 앱이 포함해야할 데이터가 무엇인지를 정의
  • 데이터의 상태가 변경되면 일반적으로 View에게 알려주지만 가끔은 Controller에도 알려준다.
  • 가끔 Controller에게 알려주는 경우는 업데이트 된 View를 제어하기 위해 다른 로직이 필요한 경우이다.

 

View

  • 데이터를 보여주는 방식을 정의한다.
  • 표시할 데이터는 Model로 부터 받게 된다.

 

Cotroller

  • 사용자로부터 입력에 대한 응답으로 Model 또는 View를 업데이트하는 로직을 포함한다.

 

동작 과정 예시

사용자가 to-do 리스트 목록에 있다고 가정하면

 

  1. 사용자가 리스트를 추가하기 위해 내용을 작성하고 추가 버튼을 눌렀다.
  2. 이러한 이벤트는 Controller에 전달된다.
  3. Controller는 Model이 수행할 메서드와 파라미터(사용자가 입력한 내용)를 전달한다.
  4. Model은 전달 받은 데이터로 메서드를 수행하고 데이터를 업데이트 한다.
  5.  Controller는 Model을 나타내 줄 View를 선택한다.
  6.  View는 Model을 이용하여 작성한 내용이 추가된 to-do 리스트를 표시한다.

 

 

 

 

 

 

MVC - MDN Web Docs 용어 사전: 웹 용어 정의 | MDN

MVC (모델-뷰-컨트롤러) 는 사용자 인터페이스, 데이터 및 논리 제어를 구현하는데 널리 사용되는 소프트웨어 디자인 패턴입니다. 소프트웨어의 비즈니스 로직과 화면을 구분하는데 중점을 두고

developer.mozilla.org


📖 MVP

Model - View - Presenter로 이루어진 패턴

출처 : https://ko.wikipedia.org/wiki/%EB%AA%A8%EB%8D%B8-%EB%B7%B0-%ED%94%84%EB%A6%AC%EC%A0%A0%ED%84%B0#cite_note-1

 

Model

  • 모델은 데이터와 비즈니스 로직을 나타냄
  • 데이터를 저장하고 관리하며, 데이터를 변경하거나 가져오는 작업을 처리

 

View

  • 사용자 인터페이스를 나타내며, 사용자와 상호작용을 하는 구성 요소
  • 수동적이며 비즈니스 로직을 포함하지 않음
  • Presenter에 의존하여 사용자 입력과 데이터 표시를 처리

 

Presenter

  • Model과 View의 중개자 역할
  • View에서 사용자 입력을 받아 처리
  • 필요한 데이터 작업을 수행하기 위해 Model과 상호 작용하며 변경 사항을 반영하도록 View를 업데이트

 

동작 과정 예시

사용자가 to-do 리스트 목록에 있다고 가정하면

 

  1. 사용자가 새로운 내용을 입력하고 추가 버튼을 누른다.
  2. View는 사용자의 입력과 "추가" 버튼 클릭 이벤트를 Presenter에 전달한다.
  3. Presenter는 입력된 내용을 Model에 전달하여 목록에 추가한다.
  4. Model은 업데이트된 리스트를 반환한다.
  5. Presenter는 새로 업데이트된 리스트를 View에 전달하여 화면을 업데이트 한다.

 

 

 


📖 MVVM

Model - View - ViewModel로 이루어진 패턴

 

출처 : https://ko.wikipedia.org/wiki/%EB%AA%A8%EB%8D%B8-%EB%B7%B0-%EB%B7%B0%EB%AA%A8%EB%8D%B8

Model

  • 데이터와 비즈니스 로직을 관리
  • 데이터 소스와 상호작용하여 데이터를 가져오고 저장
  • UI와 직접적으로 연결되지 않음

 

View

  • 사용자 인터페이스를 나타내며, 사용자와 상호작용을 하는 구성 요소
  • 데이터를 표시하고 사용자 입력을 ViewModel로 전달하는 역할

 

ViewModel

  • View와 Model의 중개자 역할
  • 뷰와 모델 사이의 통신을 중재하며 데이터 변환 및 가공을 담당

 

동작 과정 예시

사용자가 to-do 리스트 목록에 있다고 가정하면

  1. 사용자가 새로운 내용을 입력하고 추가 버튼을 클릭한다.
  2. View는 추가 버튼 클릭 이벤트를 ViewModel로 전달한다.
  3. 새로운 내용을 Model에 추가하는 로직을 실행한다.
  4. Model은 새로운 내용을 추가하고, Model의 변경 사항은 ViewModel에 알려진다.
  5. 뷰모델은 새로운 내용이 추가된 리스트를 다시 View에게 제공한다.
  6. View는 업데이트된 리스트를 화면에 표시한다.

그래서 대체 차이점이 무엇인가?

  • MVC에서는 Controller가 Model과 View를 관리하며 Model과 View 사이의 직접적인 연결이 가능하고, Controller가 일부 비즈니스 로직을 처리한다.
    • Model과 View 사이의 직접적인 연결이 가능하므로 단위테스트가 제한된다.
    • Controller가 처리하는 비즈니스 로직 : 데이터가 변경되지 않는 선에서 정렬 및 필터링(정렬이나 검색), 예외 처리나 데이터 유효성 검사 등등
  • MVP에서는 Presenter가 Model과 View를 관리하며 Model과 View 사이의 직접적인 연결을 방지하고, Model은 비즈니스 로직을 처리한다.
  • MVVM에서는 ViewModel이 View와 Model을 관리하며 Data Binding을 사용하여 View와 ViewModel 간의 동기화를 자동화하며, ViewModel은 UI 관련 로직을 담당한다.
    • Data Binding : 데이터와 View를 연결하는 작업을 Layout에서 처리하는 기술

 

 

 

Data Binding에 대한 설명은 이 블로그에서 설명을 진짜 잘해주셨다.

 

코틀린 데이터 바인딩(Data binding)

1. 데이터 바인딩 1-1. 데이터 바인딩이란? 1-2. 데이터 바인딩 vs 뷰 바인딩 2. 사용법 2-1. gradle 추가 2-2. 액티비티 2-3. 레이아웃 파일 1. 데이터 바인딩 1-1. 데이터 바인딩이란? // findViewById 쓸때는 이

todaycode.tistory.com

 

추가로 안드로이드에 적용시킨 MVC, MVP, MVVM 에 대한 설명은 이 블로그에 코드까지 적혀있다.

 

안드로이드 [Kotlin] - 아키텍처 패턴 with MVC, MVP, MVVM (feat 코드 예제)

MVP/MVVM/Clean Architecture 등 아키텍처 설계 혹은 적용 경험이 있으신 분 안드로이드 채용 공고를 보다 보면 어렵지 않게 볼 수 있는 글들이다. 오늘은 안드로이드 아키텍처패턴으로 많이 언급되는 MV

jminie.tistory.com

 

'Computer > Android' 카테고리의 다른 글

[Android] Coroutine과 Thread의 차이  (0) 2023.09.04
[Android] MVVM  (0) 2023.08.24
[52일차 Android] Socket 통신  (0) 2023.07.27
[52일차 Android] 앨범에서 사진 가져오기  (0) 2023.07.24
[52일차 Android] 사진 촬영하기  (0) 2023.07.24