티스토리 뷰
챌린지반 6주차 세션 정리
클린 아키텍쳐의 계층 구조
MVVM 패턴을 구현한다 가정하면 클린 아키텍쳐에서
UI는 액티비티, controller는 뷰모델, Entities는 데이터 클래스에 해당한다.
각 계층은 자신의 바로 다음 계층에만 의존하며 결론적으로
가장 안쪽에 위치한 Entites는 어떤 것도 의존하지 않도록 설계된다.
클린 아키텍쳐 구조의 재사용성
클린 아키텍쳐 구조에서 의존성의 방향은 가장 외부의 UI 계층에서
가장 내부의 엔티티 계층으로 흐르기에 내부 계층들은 UI와 독립적으로 설계된다.
따라서 viewModel, useCase, Entity는 재사용이 가능하다.
그러나 뷰는 자주 바뀌기 때문에 재사용이 어렵다는 문제가 있다.
그래서 비즈니스 로직을 캡슐화하여 뷰와 분리하는 개발방식을 지향한다.
뷰모델의 책임 분산
기존 뷰모델에는 API 호출과 데이터 저장 로직이 구현되어있다.
그러나 클린 아키텍쳐에서는 각각의 로직을 분리한다.
API 호출 결과를 Repository에 저장하면 뷰모델은
그걸 들고와서 뷰에 데이터를 보여주는 역할만 수행하면된다.
이는 단일 책임 원칙을 준수하는 디자인 패턴이다.
앱 아키텍쳐
클린 아키텍쳐에선 앱이 커질 때 위와 같이 계층을 분리한다.
여기서 UI Layer는 액티비티, 프래그먼트, 뷰모델을 포함하며 UI의 상호작용을 담당하고,
Data Layer는 Repository를 포함하며 데이터를 가져오거나 저장핳는 역할을 담당한다.
Api를 호출할 때 동일한 Repository를 사용하는 경우가 있는데
동일한 Data Layer를 재활용하기 위해서 중간에 Domain Layer를 하나 끼워넣는다.
클린 아키텍쳐에서는 이를 유즈케이스라고 부른다.
UseCase의 활용
동일한 Repository를 재활용하면서 서로 다른 화면을 만들기 위해 유즈케이스를 활용한다.
애플리케이션을 개발할 때 다양한 기능을 구현하게 되는데 이때
각 기능에서 발생하는 상세 케이스를 유즈 케이스에 정의해서 개발을 하게 된다.
유즈 케이스를 정의하면 각 케이스에 따른 테스트 코드 작성이 가능해진다.
'내일배움캠프 > Android 국비지원' 카테고리의 다른 글
TIL 58일차 (앱개발 심화 1주차 정리 - 2) (0) | 2024.08.12 |
---|---|
TIL 57일차 (앱개발 심화 1주차 정리 - 1) (0) | 2024.08.08 |
TIL 55일차 (Compose 특강 2회차 정리) (0) | 2024.08.08 |
TIL 54일차 (동적 layoutManager 적용) (0) | 2024.08.08 |
TIL 53일차 (Compose 특강 1회차 정리) (0) | 2024.08.07 |