wanna be dev 🧑‍💻

Cool 하고 Sick한 개발자가 되고 싶은 uzun입니다

A.K.A. Kick-snare, hyjhyj0901, h_uz99 solvedac-logo

Android/Study

🏛 클린 아키텍처 in 안드로이드 (Clean Architecture)

Kick_snare 2022. 8. 20. 20:13
728x90

What’s Clean Architecture

  • 복잡성을 사진 어플리케이션을 위한 고품질 코드를 작성하려면 상당한 노력과 경험이 필요
  • 어플리케이션은 고객의 요구사항을 충족 & 유연하고 테스트 가능하며 유지관리 가 용이해야함
  • 로버트 C 마틴 엉클밥아저씨는 2012년에 클린 아키텍처 개념을 제시

안드로이드에서의 클린 아키텍처

안드로이드에서 적용되는 클린아키텍처 구조는

Presentation

  • UI, Presenter 및 ViewModel을 포함
  • 화면과 입력에 대한 처리 등 UI와 직접적으로 관련된 부분을 담당
  • 변경되는 일이 잦아 의존성이 없도록 독립적으로 설계해야한다

Domain

  • 어플리케이션의 비즈니스 로직을 포함 (Model과 UseCase)
  • UseCase란 각 개별기능 또는 비즈니즈 논리 단위
    • 한개의 행동을 담당
  • Presentation, Data 레이어와 어떤 의존성도 맺지 않고 독립적

Data

  • 데이터 입출력을 관리
  • Repository 구현체, RoomDB, Dao, 모델서버API(retrofit2)
  • 로컬 또는 서버 API와 통신하여 데이터를 CRUD하는 역할
  • Mapper 클래스 : DB로 부터 받아온 데이터모델을 UI에 맞도록 변환

총 3개 계층으로 나누어 사용

data 모듈은 domain모듈에서 정의한 Repository 인터페이스를 구현한다.

위는 구글에서 추천하는 Repository 패턴이다. domain과 data간을 분리하기 위해 Repository 인터페이스를 domain에서 정의하고 data가 이를 구현한다. data 소스를 변경해도 비즈니스 로직은 보호된다.

클린 아키텍처를 지켜서 개발한다면 ( 관심사의 분리 및 의존성 규칙 준수 ) 단위 테스트가 쉬워지고 외부 변경사항에 유연하게 대처가 가능하다.

 

GitHub - AndroidDeepDive/ADD-Architecture-Pattern-Sample

Contribute to AndroidDeepDive/ADD-Architecture-Pattern-Sample development by creating an account on GitHub.

github.com

참고

 

 

안드로이드에 클린 아키텍처를 도입한다면 어떻게 될까? | 찰스의 안드로이드

안드로이드와 클린 아키텍처 안드로이드 앱 아키텍처에 관심을 갖게 되면 필히 접하는 키워드, 클린 아키텍처에 대해서 알아보려고 한다. 클린 아키텍처 "If you want to go fast, if you want to get done qui

www.charlezz.com

 

728x90