-
Android Architecture Component가 뭐야?Android/AAC 2019. 7. 23. 22:00
먼저 안드로이드를 이야기하면 안드로이드는 컴포넌트 기반이다.
CBD 방법론 ( Component Based Dev ) : 컴포넌트 여러 개를 조합하여 하나의 앱을 개발
우리가 흔히 보는 디자인 패턴에 대해서 한번 이야기를 해보자
MVC 패턴 ( Model + View + Controller )
초기에는 클라이언트 사이드에서 사용하였다.
웹에서 서버에 데어터가 들어오면 어쩄든 화면에 출력시키는 것이 목적이기에 MVC를 사용 하였다
안드로이드에서 이를 적용 시키면 DB에 접근하는 클래스가 Model Class!
화면에 출력을 담당하고 이벤트를 받아오는 것이 Activity Class!
실행 순서
1. Controller를 통해 입력을 함
2. Controller가 Model과 View에게 입력을 보냄
3. Model은 해당 데이터를 View에게 보내주어 출력
하지만 이것에는 문제점이 존재하는데 바로 VC 즉 Activity에 코드가 몰린다는 점이다.
물론 View와 Model사이의 의존성도 끈끈히 달라붙어 있고 말이다.
테스트 용이함의 필수는 의존성을 줄이는 것이다.
이러한 문제점을 해결하고자 나온것이 바로 MVP 패턴이다.
MVP 패턴 ( Model + View + Presenter )
Model은 변하지 않는 그대로이다.
이제 View + Controller = Acitivity가 분해되어 View + Presenter로 나뉘었다
Presenter는 쉽게 발해 View와 Model 사이의 매개체? 역할이 되었다.
Model과 View는 MVC와 동일 하지만 사용자 입력을 Controller가 아닌 View에서 받는다
그리고 Model과 View는 각각의 Presenter와 상호 동작을 하게 된다.
즉, 항상 View와 Model은 Presenter를 거쳐서 동작하게 되는 것이다.
1. View로 사용자의 입력이 들어옴
2. View는 Presenter에게 작업을 요청
3. Presenter에서 필요한 데이터를 Model에게 요청
4. Model은 Presenter에게 데이터를 반환
5. Presenter는 View에게 데이터를 넘겨줌
6. View는 Presenter로부터 받은 데이터를 출력
MVC 패턴의 의존성 문제인 View와 Model을 떨어뜨려 놓아 단점을 삭제시켜 버렸다!
하지만, View와 Model은 의존성이 없는 대신 View와 Presenter가 1:1로 강한 의존성을 생성하게 된다!
이런 단점을 해결할 또 다른 패턴이 등장한다! 바로 MVVM 패턴이다.
MVVM 패턴 ( Model + View + ViewModel )
MVVM은 WPF아 SilverLight? 에서 많이 사용되는 패턴이라고 한다
Model과 View는 이전 패턴들과 다를 것이 없다.
하지만 이번에는 Presenter가 아닌 VieWModel이 존재한다.
WPF에 있는 DataBinding을 사용하면 View와 ViewModel의 의존성을 완전히 사라진다
하지만 우리는 Android를 한다! 그러면 DataBinding을 못쓰냐??
아니다! AAC를 사용하면 DataBinding을 사용할 수 있다!
왜 이런 디자인 패턴 이야기를 꺼내보았냐면 Android Architecture Components가 공개되기 전까지는 안드로이드 앱에서 특정 Architecture가 권장되지 않았다. 개발자들에 따라 MVP, MVC ,MVVM, MVPP? 등 다양한 아키텍쳐가 나오고 이에 따라 선택하게 되었다.
안드로이드 개발진들은 안드로이드 앱을 위한 아키텍처를 정의하고 이를 구현하기 위한 라이브러리를 제공하고자
Android Architecture Components를 공개하였고 SOC( Separation of concerns )에 의한 관심사 분리로 UI와 모델을
분리하고자 하였다.
하지만 ACC를 쓴다고 해서 무조건 MVVM이 아니고! 안 쓴다고 해서 MVVM라고 할 수도 없다
사실상 패턴의 정석은 없지만 그래도 난 ACC를 썼으니! MVVM을 구현한 거야!라고 하기에는 애매하다.
또한 ACC는 디자인 패턴 말고도 개발자들의 고민 중 하나인 생명 주기나 컴포넌트들에 대해 고민을 덜어주고자
나온 것이기도 하다.
그래서 ACC에 관련해서는 아래와 같은 기능들이 있다.
- DataBinding
- LiveData
- ViewModel
- Lifecycler-aware
- Navigation
- Room
- Paging
하나하나 포스팅을 통해서 알아보도록 하자
'Android > AAC' 카테고리의 다른 글
Android Architecture Components #5 - Room (0) 2019.08.05 Android Architecture Components #4 - Navigation (0) 2019.08.05 Android Architecture Components #3 - LiveData (0) 2019.07.31 Android Architecture Components #2 - ViewModel (0) 2019.07.31 Android Architecture Components #1 - DataBinding (0) 2019.07.24