안드 공부를 해볼까?

[Android] 각 레이어 마다 Model을 만들어야 할까? 본문

안드로이드/개념 정리

[Android] 각 레이어 마다 Model을 만들어야 할까?

문바리 2022. 11. 19. 23:05
728x90

1. 개요

요즘 프로젝트를 하고 있는데 프레임워크의 사용법보다 아키텍쳐의 구조를 중점적으로 보고있습니다.

Clean Architecture를 활용하는데 각 레이어마다 Model이 있는게 이상해서 같은 팀 선배에게 물어봤고 해답을 얻어 정리하고자 합니다.

왜 각 계층마다 Model이 있는지, 그냥 Data 레이어에서 받은 것을 사용하면 안되는지를 알아보고 이를 어떻게 활용하는지 보겠습ㄴ디ㅏ.

2. 차례

- 각 계층마다 Model을 사용해야할까?

- 그렇다면 어떻게 사용하지?

 

필자가 프로젝트를 하며 느낀점을 위주로 작성했습니다. 굉장히 주관적(?)이니 틀린게 있으면 댓글을 남겨주세요.

3. 본문

1. 각 계층마다 Model을 써야하나?

사실 이게 제일 궁금했습니다. '어차피 우리는 서버에 있는 테이블 기준으로 데이터 받고 그거만 쓰면 되는거 아닌가?' 라는 생각이 있어서 Data레이어에만 Model이 있는게 맞다고 생각했습니다.

하지만 같은 팀 선배님은 아니라고 하셔서 공식문서부터 살펴봤습니다.

https://developer.android.com/topic/architecture#drive-ui-from-model

먼저 이 문서를 보겠습니다. 앱 아키텍쳐 가이드의 한 문단입니다.

우리가 UI와 데이터를 바인딩할 때 당연히 data class를 통해서 많이 연결합니다. 

여기 까지만 봤을 때 그럼 결국 데이터 레이어 모델만 사용하는 거 아니야? 라고 생각했습니다.

 

https://developer.android.com/jetpack/guide/ui-layer#architecture

하지만 이 공식문서를 보고 생각이 싹 사라졌습니다.

게시글 하나를 가져온다고 생각하겠습니다.

서버에서 가져온 데이터는 테이블의 id도 있을 것이고 생성시간 등 메타데이터가 존재합니다.

 

이런 것이 UI단에서 필요할까요? 사용자에게 보여주는건 제목, 내용 등과 같은 것입니다.

(메타 데이터 예가 조금 그렇지만 UI에서 필요하지 않는 것을 뜻합니다.)

UI에서 사용할 모델을 따로 만들어라!

 

안드로이드 공식문서에는 다음과 같이 설명되어있습니다.

  1. 앱 데이터를 사용하고 UI에서 쉽게 렌더링할 수 있는 데이터로 변환합니다.
  2. UI 렌더링 가능 데이터를 사용하고 사용자에게 표시할 UI 요소로 변환합니다.
  3. 이렇게 조합된 UI 요소의 사용자 입력 이벤트를 사용하고 입력 이벤트의 결과를 필요에 따라 UI 데이터에 반영합니다.
  4. 1~3단계를 필요한 만큼 반복합니다.
 

...수정중....

반응형

'안드로이드 > 개념 정리' 카테고리의 다른 글

[Android] Hilt란 무엇일까  (0) 2023.02.21
[Architecture Pattern] MVC, MVP, MVVM  (0) 2022.05.27
Comments