클린 아키텍처는 로버트 C. 마틴에 의해 만들어진 철학으로, 소프트웨어의 관심사를 계층별로 분리하는 소프트웨어 디자인 철학이다.
Entities
엔티티는 전사적 비즈니스 규칙을 캡슐화한다. 개발자가 아닌 사업수행팀도 알야하는 지식인가? 가 비즈니스 규칙이라 생각할 수 있다.
Use Cases
유스 케이스 계층에서는 애플리케이션과 관련된 비즈니스 규칙을 포함하고 시스템의 모든 유스 케이스 구현체들을 캡슐화 한다. 이러한 유즈 케이스들은 엔티티로부터의 데이터 흐름들을 관리한다.
엔티티에 영향을 미치지 않으며, UI나 프레임워크 같은 외부 계층에서도 영향을 받지 않는다.
Interface Adapters(Presenter)
유스케이스나 엔티티로부터 얻은 데이터를 가공하는 계층이다. 아키텍처 디자인 패턴에서 흔히 말하는 Presenter, View, ViewModel, Controller 같은 관심사가 속한다.
Frameworks & Drivers
가장 바깥쪽 계층으로 일반적으로 안드로이드에서는 UI와 관련된 액티비티, 프래그먼트, 인텐트 전달, retrofit과 같은 네트워크와 관련된 프레임워크 코드가 속한다.
- domain layer
도메인 레이어는 data model, repository(행동 담고있음), usecase(행동의 최소단위)를 담고 있다.
사용자의 행동의 최소 단위를 나타내는 클래스.
클래스 양이 많아지는 단점이 있지만 전체적인 코드 파악 및 유지/보수 측면에서 이점이 많다.
유스케이스에서는 domain 레이어에서 정의한 Repository 중 알맞은 것을 주입하여 구현하므로 코드의 흐름을 파악하기 용이하다.
repository
domain 레이어에서는 인터페이스 형태로 레포지토리를 나타낸다
entity
프레임워크와 의존성을 가지면 안된다. retrofit 등을 통해 얻은 데이터 객체를 entity 형태로 매핑을 할 예정
- data layer
- presentation layer
참고링크
https://jungwoon.github.io/android/2021/04/12/Android-CleanArchitecture.html
https://namget.tistory.com/entry/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-Clean-Architecture
깔끔하게 정리된 링크를 첨부하도록 하겠다