Android

안드로이드 프로젝트의 클린 아키텍처의 프로젝트 모듈 구성

네모메모 2023. 3. 25. 22:40
반응형

 

 

안드로이드 프로젝트에서 클린 아키텍처를 적용할 때는 일반적으로 다음과 같은 모듈 구성을 채택합니다.

  1. Domain 모듈: 앱의 핵심 비즈니스 로직이 담긴 모듈로, 가장 순수한 형태의 코드를 포함합니다. 도메인 모듈은 안드로이드 프레임워크나 라이브러리에 의존하지 않으며, 단순히 앱의 비즈니스 규칙과 도메인 객체만을 포함합니다.
  2. Data 모듈: 앱의 데이터 소스를 추상화하는 모듈입니다. 이 모듈은 로컬 데이터 소스(예: SQLite), 원격 데이터 소스(예: REST API) 등 데이터를 처리하는 방식에 따라 여러 하위 모듈로 구성될 수 있습니다. 데이터 모듈은 도메인 모듈과 안드로이드 프레임워크 사이를 이어주는 매개체 역할을 하며, 데이터 소스에서 받아온 데이터를 도메인 객체로 변환하여 반환합니다.
  3. Presentation 모듈: 앱의 UI를 구성하는 모듈입니다. 이 모듈은 액티비티, 프래그먼트, 뷰, 어댑터 등 UI 컴포넌트를 포함합니다. Presentation 모듈은 UI 이벤트를 처리하고, 도메인 모듈에서 받은 데이터를 UI에 표시하는 등 UI와 관련된 작업을 처리합니다. Presentation 모듈은 도메인 모듈과 완전히 분리되어야 하며, 도메인 모듈과 데이터 모듈에 대한 의존성을 갖습니다.
  4. Dependency Injection(DI) 모듈: 클린 아키텍처를 구현하려면 DI 모듈이 필요합니다. DI 모듈은 모든 모듈에서 사용하는 의존성을 관리하며, 모듈 간의 의존성을 제어합니다. DI 모듈은 일반적으로 Dagger, Koin, Hilt 등의 DI 프레임워크를 사용하여 구현합니다.

이러한 모듈 구성은 안드로이드 앱에서 클린 아키텍처를 적용하는 일반적인 방법입니다. 모듈 구성은 프로젝트의 규모와 구성에 따라 달라질 수 있습니다.

 

+)  그렇다면 OffsetDateTime에서 String타입으로 변환해주는 util 기능의 확장 함수는 어떤 모듈에 존재해야 합니까?

OffsetDateTime에서 String으로 변환하는 util 기능의 확장 함수는 domain 또는 util 모듈에 존재할 수 있습니다. 이는 OffsetDateTime이 domain 객체에 속하기 때문에 domain 모듈에 위치할 수 있고, 다른 객체에서도 이 기능을 사용할 수 있기 때문에 util 모듈에 위치할 수도 있습니다. 하지만 이 기능이 특정한 Android API에 의존하지 않으므로 Android Framework에 의존하는 모듈에서는 위치하지 않아야 합니다.

반응형