Android(Kotlin)

Clean Architecture

----___<<<<< 2021. 8. 24. 03:21

 개발을 하다보면 한번쯤은 들어보는 개념입니다.

 

 MVVM, MVP, MVC 등의 디자인 패턴은 들어봤고, 코드를 잘 정리해야 하는건 알겠는데 클린아키텍처는 또 뭐고 이건 왜 써야하는가? 에 대해서 한번 간단하게 보고 가겠습니다.

 

 그냥 쉽게말하면 프로젝트 구조를 분리해서 서로 의존하지 않고 테스트와 유지보수를 쉽도록 한다라는 뜻인데 그림을 보면서 한번 살펴보겠습니다.

 

 

https://medium.com/@justfaceit/clean-architecture%EB%8A%94-%EB%AA%A8%EB%B0%94%EC%9D%BC-%EA%B0%9C%EB%B0%9C%EC%9D%84-%EC%96%B4%EB%96%BB%EA%B2%8C-%EB%8F%84%EC%99%80%EC%A3%BC%EB%8A%94%EA%B0%80-1-%EA%B2%BD%EA%B3%84%EC%84%A0-%EA%B3%84%EC%B8%B5%EC%9D%84-%EC%A0%95%EC%9D%98%ED%95%B4%EC%A4%80%EB%8B%A4-b77496744616

 

 

 클린아키텍처라고 하면 위와 같은 그림이 나오는데,  안드로이드에서는 아래의 그림이 더 직관적이기 때문에 아래의 그림을 참고하시는게 더 좋을 듯 합니다.

 

https://youngest-programming.tistory.com/484

 

 여기 보면

 

 Presentation Layer

 Domain Layer 

 Data Layer

 

 라고 3개의 Layer로 분리가 되어 있습니다.

 

 일단은 하나하나씩 살펴보겠습니다.

 

 Data Layer  

 

 말 그대로 데이터들이 들어가는 곳입니다. 

 

 엔티티(데이터를 정의한 모델)과 데이터소스(실제 데이터의 입출력이 실행되는 부분), 리포지토리(API호출, 데이터 저장 읽기) 등을 정의하는 계층입니다.

 

 Presentation Layer

 

 UI관련 처리해주는 영역입니다. ViewModel등으로 핸들링하는 작업입니다.  Presenter라는게 MVVM의 ViewModel이 아니라, 좀 더 넓은 의미로 View와 관련된 부분을 모두 핸들링하는 부분이라고 생각하면 됩니다.

 

 Domain Layer

 

  UseCase는 비즈니스 로직이 구현되고, 나머지는 받아온 데이터 모델을 변경해주는 부분입니다.

 

 

 꼭 해야하나요?

 

 사실 꼭 해야하지 않아도 되는 것 같기도 합니다. 다만, 큰 프로젝트를 할 때 유지보수 차원에서 해놓은게 훨씬 좋아 보입니다. 사실 View와 Logic의 분리만 해놔도 훨씬 더 간편해지긴 하니깐요.

 

 

 

 

 

- 참조

 

https://medium.com/@justfaceit/clean-architecture%EB%8A%94-%EB%AA%A8%EB%B0%94%EC%9D%BC-%EA%B0%9C%EB%B0%9C%EC%9D%84-%EC%96%B4%EB%96%BB%EA%B2%8C-%EB%8F%84%EC%99%80%EC%A3%BC%EB%8A%94%EA%B0%80-1-%EA%B2%BD%EA%B3%84%EC%84%A0-%EA%B3%84%EC%B8%B5%EC%9D%84-%EC%A0%95%EC%9D%98%ED%95%B4%EC%A4%80%EB%8B%A4-b77496744616

 

Clean Architecture는 모바일 개발을 어떻게 도와주는가? - (1) 경계선: 계층 나누기

How Clean Architecture Assists Mobile Development - Part 1. Boudaries: Defining Layers

medium.com

 

https://youngest-programming.tistory.com/484

 

[안드로이드] 클린 아키텍처(Clean Architecture) 정리 및 구현

[2021-04-28 업데이트] [프로젝트] github.com/mtjin/mtjin-android-clean-architecture-movieapp mtjin/mtjin-android-clean-architecture-movieapp Clean Architecture 학습 및 구현. Contribute to mtjin/mtjin..

youngest-programming.tistory.com

 

https://jungwoon.github.io/android/2021/04/12/Android-CleanArchitecture.html

 

안드로이드에서 클린 아키텍처 구현하기 | Jungwoon Blog

지난 3월부터 새로운 회사로 이직을 하게 되었고 해당 회사에서는 Clean Architecture를 사용하고 있었습니다. 처음 접하는 Clean Architecture라 해당 부분 학습하면서 정리한 내용입니다. 클린 아키텍처

jungwoon.github.io

 

'Android(Kotlin)' 카테고리의 다른 글

Sealed class vs Enum  (0) 2021.08.27
Android MVC MVVM MVP  (0) 2021.08.24
코루틴(Coroutine)  (0) 2021.08.23
Android Workmanager  (0) 2021.08.22
Android Room Google Ex  (0) 2021.08.22