📱 Android

[Android] Clean Architecture

콩드로이드 2023. 1. 8. 14:59

이전 포스팅에도 작성한 적이 있는데, 

새로이 공부하면서 다시 정리해보도록 하겠습니다 ✏️ 

왜냐하면 까먹었기 때문이죠 

아마 내용이 비슷할거에요.. 그래도 한번 더 써보는걸로도 공부가 되니깐,,.

 

2022.05.29 - [📱 Android] - [Android] Clean Architecture in Android

 

[Android] Clean Architecture in Android

Clean Architecture 본격적인 디자인 패턴 공부에 앞서, clean Architecture에 대해 알아보겠습니다 Clean Architecture에 가장 중요한 부분은 UI와 Data를 분리함에 있습니다 관심사를 계층별로 분리 관심사란 단

kong-droid.com

 


Clean Architecture

⭐️ 관심사 분리 : 안드로이드 설계 시 가장 중요한 원칙 

*관심사란?
어떠한 상태나 데이터에 영향을 미치는 정보의 집합

 

 

각 계층별로 관심사를 분리하는 소프트웨어 디자인 철학입니다 

 

 

클린 아키텍처의 특징 

✔️ 코드 종속성이 외부에서 내부로 의존합니다 

     UI -> Presenters -> Usecase -> Entities

 

✔️ 내부계층은 외부계층의 코드를 알 수 없습니다 

 

✔️ 계층간의 의존성이 단방향이기 때문에 재사용성이 용이하고, 유닛테스트가 쉬워집니다  

 

✔️ 안쪽 계층으로 진입할 수록 캡슐화, 추상화 수준이 높아진다 

 


클린 아키텍처의 각 계층

Entities

• 데이터의 구조나 메서드를 포함 ex)POJO

• 외부에서 변경사항이 있을 때, 가장 최소한의 변경사항만 가져야한다 

   ex) 화면이동 등 변경 시 엔터티는 영향받으면 X

안드로이드 애플리케이션 같은 코드를 포함해선 안된다 

 

 

 

Use Cases

• 애플리케이션과 관련된 비즈니스 규칙을 포함하고, Entity로부터 데이터 흐름들을 관리

Entity에 영향을 미치지 않으며, 외부계층에서도 영향을 받지 않는다 

ex) Model(DB질의, 네트워크 요청 등 비즈니스 로직 수행)

Repository(내부 DB 접근, 서버에 데이터요청)

Executor(Model, Repository가 백그라운드에서 작업 수행할 수 있도록 작업 스레드 관리)

 

 

Presenter(Interface Adapters)

• Use case, Entity로 부터 얻은 데이터를 가공하는 계층

ex) 원하는 결과값을 UI에 표현하려고 데이터 형식 변경

ex) ViewModel, View, Presenter...

비즈니스 로직과 프레임워크를 자연스럽게 연결하는 목적 (UI로부터 얻은 데이터를 내부 DB, 서버로 전송할 때도 여기서 데이터 가공해 전달)

 

 

 

UI(Frameworks & drivers)

• UI와 관련된 Activity, Fragment, Intent, Content Provider 등이 해당 

Retrofit과 같은 네트워크 관련 프레임워크가 여기에 해당