[Android] MVVM 패턴, Clean Architecture

민채·2024년 3월 27일
0

Android

목록 보기
16/16

MVC 패턴

  • Model, View, Controller
  • 기존에 많이 사용하던 패턴

단점

  • 코드 간의 연관성이 밀접해서 규모가 클수록 유지보수가 힘들어짐
  • View를 수정할 경우 Controller를 같이 수정해야 하는 경우가 생김
  • Controller를 수정할 경우 Model을 같이 수정해야 하는 경우가 생김

MVVM 패턴

  • Model, View, ViewModel
  • ViewModel이 View를 참조하지 않기 때문에 의존성이 없음
  • ViewModel이 View의 상태를 관찰함
  • UI 로직과 비즈니스 로직을 분리해 가독성을 높이고 유지보수가 용이해짐

Model

  • 데이터를 저장하는 클래스
  • 기존 패턴에서 사용하던 Model과 같은 역할

View

  • UI를 나타내는 역할
  • ViewModel에게 받은 데이터로 화면을 갱신하는 역할

ViewModel

Model로부터 View에 필요한 데이터를 가져와서 처리하고 해당 데이터를 View에 보여주는 역할

ViewModel 정리글

예제

안드로이드 MVVM 패턴 연습 프로젝트

Clean Architecture

  • 계층을 나누어서 관심사를 분리하고, 각 분리된 클래스가 한가지 역할만 할 수 있도록 구현하는 방식
  • 안드로이드에서의 Clean Architecture는 Presentation Layer, Domain Layer, Data Layer로 이루어짐
  • Presentation Layer (UI Layer) : 데이터, 도메인 계층에 의존성을 가지고 있음, 화면과 입력에 대한 처리를 함
    • View : UI를 표시 (Activity, Fragment)
    • Presenter : ViewModel과 같이 UI 업데이트와 관련된 일을 수행, UseCase를 사용
  • Domain Layer : 독립적인 계층으로 의존성이 없음, 다른 계층의 변경이 도메인 레이어에 영향을 끼쳐서는 안됨
    • UseCase : 비즈니스 로직이 들어 있는 영역, Repository를 사용
    • Entity : 앱의 실질적인 데이터
    • Repository(Interface) : 관련된 행동을 정의, 도메인 레이어를 독립적으로 만들기 위해 Repository를 Interface와 구현체로 분리해야함
  • Data Layer : 도메인 레이어에 의존성을 가지고 있음
    • Repository(구현체) : 데이터의 저장 및 수정 등의 기능을 제공하는 영역
    • Data Source : 실제 데이터의 입출력이 실행됨

참조

profile
코딩계의 떠오르는 태양☀️

0개의 댓글