티스토리 뷰

* 안드로이드 아키텍쳐 컴포넌트( Android Architecture Components) 

- Android Architecture Components , AAC

- 앱 구조를 튼튼하고 테스트에 용이하고 유지보수성에 뛰어나게 만들어주는 라이브러리 모음

- 모듈화된 코딩을 위해 Databinding, LiveData, ViewModel 등의 라이브러리 제공 

- 안드로이드 기술 스펙 관련 정보 깃허브 

 

1. MVVM 패턴이란? 

 

https://docs.microsoft.com/ko-kr/xamarin/xamarin-forms/enterprise-application-patterns/mvvm-images/mvvm.png

- 안드로이드 개발을 시작한 사람은 처음부터 데이터를 Activity에 넣음, 하지만 시간이 지나갈수록 Activity가 점점 무거워지기 때문에 수정이나 유지 보수가 필요함 ->  그렇기 때문에 MVVM 패턴의 필요성이 대두된다. 

- MVVM 패턴이란? View - ViewModel - Model을 사용하여 각각의 역할을 분리하여 가독성과 재 사용성을 높인다. 

- MVVM의 장점?

(1) View가 데이터를 실시간으로 관찰하기 때문에 LiveData, 즉 Observble 패턴을 사용하여 데이터베이스를 관차라고 자동적으로 UI를 갱신

(2) 생명주기로부터 안전 , View 모델을 통해 데이터를 참조하기 때문에 Activity/ Fragment  생명주기를 따르지 않음 

(3) 역할분리 및 모듈화가 되어 있기 때문에 역할별로 정리하기가 좋음 

 

 

<MVVM의 구성요소>

(1) View - 뷰

- UI를 담당하는 Activity나 Fragment

- 화면에 어떤것을 그릴지 결정하고 상호작용하는 것 

- 보동 데이터의 변화를 감지하기 위해 Observer를 가짐 

- 단순히 데이터를 뿌리기만 해야하기 때문에 로직이나 데이터 모델이 들어가선 안됨 

 

(2) ViewModel - 뷰모델

- UI 를 위한 데ㅣ터를 가짐, 구성이 변경되어도 살아남음

- 뷰 모델은 뷰와 분리되기 때문에 Activity가 Destroy되도 다시 Create 되어도 종료되지 않고 데이터를 여전히 가지고 있음 

- View에 관련된 비지니스 로직이 이곳에 들어감 

 

(3) LiveData - 라이브데이터

- 관찰(Observable)이 가능한 Dataholder class, 뷰에서 뷰모델의 LiveData를 관찰하게 되면 데이터가 변경될때 내부적으로 자동적으로 알려주게 됨. 그리고 LiveData는 Activity나 Fragment의 생명주기를 인지

- Activity가 화면위에 활성화 되어 있을 때만 UI 변경 등의 기능동작, Destroy된 상태에서는 동작하지 않기 때문에 Memory의 leak 발생을 줄여줌 

 

(4) Repository - 리포지토리

- 뷰 모델과 상호작용하기 위해 잘 정리된 데이터 API를 들고 있는 클래스

- 앱에 필요한 데이터, 즉 내장 데이터 베이스나 외부 웹 서버 데이터 등에서 데이터를 가져옴

- DB나 서버에 직접 접속하지 않고 Repository에 직접 접근 

 

(5) Room - 룸

- SQLite의 코드를 직접 작성하는 경우, 직접 테이블을 Create하거나 쿼리문을 일일이 변수에 저장해야했지만 Room을 쓰면 좀더 직관적이고 편리한 DB 사용 

 

 

 

 

안드로이드 웹 페이지를 가보면 Declaring dependencies에 LifecycleComponents 존재 

 

https://developer.android.com/topic/libraries/architecture/adding-components

 

프로젝트에 구성요소 추가  |  Android 개발자  |  Android Developers

Issue Tracker 버그를 수정할 수 있도록 문제를 신고해 주세요. 시작하기 전에 아키텍처 구성요소 앱 아키텍처 가이드를 읽어보는 것이 좋습니다. 이 가이드는 모든 Android 앱에 적용되는 유용한 원��

developer.android.com

Pre-AndroidX Dependencies에 존재 View Model과 LiveData를 같이 쓸수 있는 gradle 설치 (implementation) 

 

def lifecycle_version = "1.1.1"
// ViewModel and LiveData
    implementation "android.arch.lifecycle:extensions:$lifecycle_version"

 

 

2. MVP 패턴 

 

 

 

3. MVC 패턴이란? 

Model, View, Controller 

- Model -  데이터의 형식을 지정하고 저장하고 불러오는 작업들에 관한 코드, Model 데이터를 View에 연결한다. 

- View -  HTML ,css .. JSP 

- Controller - Serblet 

 

 

 

 

4.  Clean 아키텍쳐

- Uncle Bob이 2012년 엔터프라이즈 아키텍쳐에서 논의 되던 내용을 집약시킨것 

- 변화에 잘 대응할 수 있는 코드

- 화면에 보여주는 뷰의 생명주기를 액티비티에서 관리

- Clean Architecture -> UI를 독립시키고 Database를 분리시키고, 외부 적인 설정에 독립적인 구조 적용, 프레임워크에 의존적이지 않은 코드 짤 수 있고 테스트가 가능한코드 짤 수 있음

- Presentation Layer -> 4개의 사용자에게 보여지는 로직

- Data Layer -> 네트워크를 포함한 데이터를 가져오는 레이어

- Domain Layer -> 사용자의 유스케이스로 분리되는 레이어

- Entity Layer -> 사용자의 개념 정의  

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG more
«   2025/04   »
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
글 보관함