Android Clean Architecture -2-

한창희·2021년 10월 14일
0

< clean architecture? >


클린 아키텍처는 로버트 C. 마틴에 의해 만들어진 철학으로, 소프트웨어의 관심사를 계층별로 분리하는 소프트웨어 디자인 철학이다.

  • Entities
    엔티티는 전사적 비즈니스 규칙을 캡슐화한다. 개발자가 아닌 사업수행팀도 알야하는 지식인가? 가 비즈니스 규칙이라 생각할 수 있다.

  • Use Cases
    유스 케이스 계층에서는 애플리케이션과 관련된 비즈니스 규칙을 포함하고 시스템의 모든 유스 케이스 구현체들을 캡슐화 한다. 이러한 유즈 케이스들은 엔티티로부터의 데이터 흐름들을 관리한다.
    엔티티에 영향을 미치지 않으며, UI나 프레임워크 같은 외부 계층에서도 영향을 받지 않는다.

  • Interface Adapters(Presenter)
    유스케이스나 엔티티로부터 얻은 데이터를 가공하는 계층이다. 아키텍처 디자인 패턴에서 흔히 말하는 Presenter, View, ViewModel, Controller 같은 관심사가 속한다.

  • Frameworks & Drivers
    가장 바깥쪽 계층으로 일반적으로 안드로이드에서는 UI와 관련된 액티비티, 프래그먼트, 인텐트 전달, retrofit과 같은 네트워크와 관련된 프레임워크 코드가 속한다.


< in Android >


- domain layer
도메인 레이어는 data model, repository(행동 담고있음), usecase(행동의 최소단위)를 담고 있다.

사용자의 행동의 최소 단위를 나타내는 클래스.
클래스 양이 많아지는 단점이 있지만 전체적인 코드 파악 및 유지/보수 측면에서 이점이 많다.
유스케이스에서는 domain 레이어에서 정의한 Repository 중 알맞은 것을 주입하여 구현하므로 코드의 흐름을 파악하기 용이하다.

  • repository
    domain 레이어에서는 인터페이스 형태로 레포지토리를 나타낸다

  • entity
    프레임워크와 의존성을 가지면 안된다. retrofit 등을 통해 얻은 데이터 객체를 entity 형태로 매핑을 할 예정


- data layer

  • repository, remote, local...
    domain 레이어에서 설계한 repository 인터페이스를 구현한다(network 통신 or 내부 DB)
    data를 가져오기위한 Remote API, LocalCache(Room, Sharedpreferences), Entity와 Data Model의 Mapper 같은 클래스도 위치한다.

- presentation layer

  • ui레벨의 layer
    MVVM 형태로 구현해보기
    View (Activity / Fragment)에선 UI와 관련된 부분을 처리,
    ViewModel에서 Domain 레이어의 알맞는 UseCase를 가져와 사용한다.


참고링크
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
깔끔하게 정리된 링크를 첨부하도록 하겠다

profile
매 순간 최선을 다하자

0개의 댓글