나만의 안드로이드 앱 만들기(초보자 편) - 의존성 추가 및 패키지 구분하기 (6-2)
우선 큰 틀은 다음과 같습니다.
각각의 구조에 대해 설명해보면 다음과 같습니다.
이름 | 용도 |
common | 공통적으로 사용되는 디자인 패턴이나 Compose 등을 관리합니다. |
core | 비즈니스 로직 및 유틸 클래스 등을 관리합니다. |
di | 의존성 들을 관리합니다. |
ui | 유저와 상호작용이 가능한 UI 파일들을 관리합니다. |
MainActivity | 앱의 유일한 액티비티입니다. |
SdApplication | 앱의 어플리케이션 클래스입니다. |
현재는 UI 와 비즈니스 로직이 같은 모듈에 있는 구조이지만, 차후 중급자 강좌에서 클린 아키텍쳐 및 멀티모듈을 통해 보기 좋게 분리해보도록 하겠습니다.
각각에 대한 상세 설명은 다음과 같습니다.
common
현재 common은 base 와 compose 로만 구분시켜 두었습니다.
base 는 디자인 패턴에서 기본 전제가 될 수 있는 소스코드를 개발 및 관리하는 디렉터리가 될 예정입니다.
compose 는 공통 디자인에 대한 소스코드를 개발 및 관리하는 디렉터리가 될 예정입니다.
이 둘은 로직에 영향을 미칠 것이냐? 디자인에 영향을 미칠 것이냐? 라는 관점으로 분류시켜보았으며, 개발을 진행하면서 수정 보완 될수도 있을 것 같습니다.
core
core 에서는 앱에서 사용할 실질적인 비즈니스 로직과 유틸들을 관리할 예정입니다.
여기서 핵심은 useCase <- repository <- dataSource 로 이어지는 의존 관계입니다.
앱의 모든 비즈니스 로직을 정의하고 안드로이드 의존성을 철저하게 배제하여 이 디렉터리를 기반으로 테스트 코드도 작성해볼 예정입니다.
지금은 구조에 대해서만 소개를 드리고 있어서 상세한 내용은 강좌를 진행하는 동안 지속적으로 설명드리도록 하겠습니다.
참고로 bl은 비즈니스 로직을 의미합니다.
di
지금은 core 의 bl에서 참조가 필요한 의존성을 정의하고 있습니다.
지금은 유즈 케이스가 참조할 레파지토리와 레파지토리가 참조할 데이터소스, 데이터소스가 참조할 로컬 스토리지만 구성을 해본 상태입니다.
ui
사람으로 따졌을때 core 가 사람의 뇌라면 ui 는 몸이라고 생각하시면 될 것 같습니다.
사용자들과 실질적으로 상호작용이 가능한 부분인 UI에 대한 부분을 담당합니다.
앱의 모든 화면을 구성하고 다른 페이지로 이동하는 등 여러 작업들을 진행해볼 예정입니다.
MainActivity & SdApplication
화면을 구성하는 유일한 액티비티와 이 어플을 정의하는 어플리케이션 클래스입니다.
현재는 거의 기본에 가깝게 사용하고 있고, 추후 개발이 진행되면서도 크게 손대지는 않았던 것 같습니다.
정리
전반적인 구조에 대해 설명해드렸고, 다음 편에서는 이 구조를 어떻게 구현해야되는지에 대해 소개해드리겠습니다.
감사합니다!