일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- SWEA
- 백준 퇴사
- imeOptions
- 조합
- Kotlin
- EditText
- dfs
- val
- 완전탐색
- 백준 14501
- 시뮬레이션
- hilt
- 오르막수
- 백준
- 약수 구하기
- 최단경로
- 순열
- Parcelable
- Android
- 프로그래머스
- BuildConfig
- 자바
- java
- EditorInfo
- BFS
- 스카이라인 쉬운거
- 지능형 기차2
- 2501
- 순수함수
- Parcelize
- Today
- Total
안드 공부를 해볼까?
[Android] 각 레이어 마다 Model을 만들어야 할까? 본문
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에서 쉽게 렌더링할 수 있는 데이터로 변환합니다.
- UI 렌더링 가능 데이터를 사용하고 사용자에게 표시할 UI 요소로 변환합니다.
- 이렇게 조합된 UI 요소의 사용자 입력 이벤트를 사용하고 입력 이벤트의 결과를 필요에 따라 UI 데이터에 반영합니다.
- 1~3단계를 필요한 만큼 반복합니다.
...수정중....
'안드로이드 > 개념 정리' 카테고리의 다른 글
[Android] Hilt란 무엇일까 (0) | 2023.02.21 |
---|---|
[Architecture Pattern] MVC, MVP, MVVM (0) | 2022.05.27 |