안드로이드 클린 아키텍쳐 - Android Clean Architecture 정리

2022. 1. 31. 19:27Android Architecture

Clean Architecture 

개념

- 의존성 규칙, SOLID 원칙을 지켜 전체적인 구조를 구현하는 것으로 관심사의 분리, Testable 한 구조, 변경이 용이한 코드 등의 목적을 만족하는 구조이다 

특징

  1. Clean Architecture는 프레임 워크에 독립적입니다.
    • Clean Architecture는 일부 기능이 포함된 라이브러리 (곧 프레임워크)에 의존하지 않습니다.
    • 이를 통해 프레임워크의 제약에 시스템을 맞추는 것이 아니라, 시스템의 도구로써 프레임워크를 활용할 수 있게 합니다.
  2. Clean Architecture는 테스트를 용이하게 해줍니다.
    • The business rules(Entity)를 테스트하는데에 외부 요소를 필요로 하지 않습니다.
  3. Clean Architecture는 UI에 독립적입니다.
    • 다른 시스템 변경 없이, UI를 쉽게 변경할 수 있습니다. (UI 변경의 용이성을 줍니다.)
      • 예들 들면, 웹 UI에서 Console UI로 변경한다 할때, The business rules(Entity)를 변경없이 그대로 사용할 수 있습니다.
  4. Clean Architecture는 DB와 독립적입니다.
    • The business rules(Entity)이 DB에 바인딩 되지 않으므로, DB의 종류를 쉽게 변경할 수 있습니다.
      • 예를 들면, Oracle에서 SQL Server, for Mongo, BigTable, CouchDB 등등으로 쉽게 변경 가능합니다.
  5. Clean Architecture는 외부와 독립적입니다.
    • The business rules(Entity)는 외부에 대해 알필요가 없고, 전혀 알지 못합니다.
      • 이 덕분에 1-4의 이점을 가져올 수 있는 것입니다.

Android Clean Architecture

android clean architecture

- presentation, data, domain 세가지 layer 로 분리된다. 

presentation 에는 view(fragment, activity 등), controller(viewModel), module(di file) 등이 포함되며 domain에 의존성을 가진다

domain 에는 useCase, Repository 인터페이스, model(view영역에서 사용하는 model) 등이 포함되며 domain layer 는 독립적이다.

data 에는 domain layer 의 Repository 구현체, DataSource(remote, local), data layer 의 모델을 domain layer 의 모델로 변환해주는 mapper, api 통신 영역이 이뤄지는 retrofit service 영역, room dao entity 등이 관리되는 entity 등이 포함되며 domain layer에 의존성을 가진다. 

 

'Android Architecture' 카테고리의 다른 글

[Architecture] MVVM, MVI, MVP, MVC 비교  (0) 2022.06.28