상세 컨텐츠

본문 제목

나만의 안드로이드 앱 만들기(초보자 편) - core (6-4)

나만의 안드로이드 앱 만들기/초급자

by Victorywskim 2023. 11. 11. 13:41

본문

반응형

이번 편에서는 core 에 대해 설명드리겠습니다.

 

core 는 앱에서 가장 중요한 부분입니다. (물론 어느하나 중요하지 않은 부분은 없습니다 ㅠㅠ)

 

core는 앱의 비즈니스 로직을 담당하고 있습니다.

 

사람으로 따지면 두뇌에 해당하는 부분이라고 생각하시면 좋을 것 같습니다.

 

이 앱이 어떤 기능을 가지고 있고 어떤 데이터를 주입하면 어떤 결과값을 반환하는지에 대해 이 부분에 모두 정의한다라고 생각해주시면 되겠습니다.

 

우선 전체 코드는 아래 링크를 참고 부탁드립니다.

https://github.com/tmvlke/SimpleDutch/tree/22bff04ce892503bce7c4e8f081557289f5d4a62/app/src/main/kotlin/wskim/aos/simpledutch/core

 

core 는 현재 bl, util, SharedPreferencesManager 3가지로 구성되어 있습니다.

 

bl 은 비즈니스 로직의 줄임말으로 실제 앱의 로직이 정의되어 있습니다.

util은 앱에서 사용할 유틸 클래스들이 정의되어 있습니다.

SharedPreferencesManager 는 안드로이드 내부 저장소에 접근하기 위한 클래스인데 앱을 구현할때 서버나 로컬에서 데이터를 가져와서 유저에게 제공해야 하는데 이번 프로젝트에서는 로컬 데이터만 사용할 예정이기 때문에 추가적으로 디렉터리를 분리하지는 않았습니다.

 

bl 먼저 설명드리겠습니다.

 

bl 안에는 dataSource, repository, useCase 가 있는데 상관 관계는 다음과 같습니다.

 

1. 유저가 화면에서 버튼을 클릭하는 상황이 있습니다.

2. 뷰에서는 유저가 어떤 액션을 할지 알수 없습니다. 그저 유저가 어떤 버튼을 눌렀는지를 뷰모델에게 전달합니다.

3. 이벤트를 전달받은 뷰모델은 유즈케이스에게 유저가 이런 상태값을 가지고 있는데 이런 행동을 취할려고 한다라는 것을 물어보게 됩니다.

4. 유즈케이스는 본인이 알고 있는 로직을 사용해서 뷰모델에게 어떻게 하라고 반환합니다.

5. 이 상황에서 뷰모델이 참고해야할 데이터가 있다면 레파지토리에서 데이터를 가져오거나 저장하게 됩니다.

6. 레파지토리는 실제로 데이터를 다루지는 않습니다. 그저 데이터 소스에서 정보를 제공 받아서 취합하여 반환하게 됩니다.

7. 뷰모델은 유즈케이스에게 반환받은 대로 뷰에게 어떤 행동을 취하게 합니다.

 

지금은 이 구조에 대해 명확하게 인지만 해주시고, 추후 앱 개발 시 조금 더 자세하게 설명 드리겠습니다.

 

util 은 비즈니스 로직과는 다르게 하나의 도구로 인지하시면 될 것 같습니다.

예를 들어서 2023-10-10 이라는 문자열이 있는데 이걸 2023.10.10 으로 바꿔야 되는 상황이 있다고 가정해봅시다.

 

그럼 지금까지의 설명을 들었을때 유즈케이스 안에 저 로직을 만들면 되는거 아니야? 라는 생각이 들 수 있습니다.

 

하지만 프로젝트가 점점 커지면서 저 로직을 다른 곳에서도 사용해야 한다면 그 유즈케이스에서는 어떻게 구현 할 것인지에 대한 의문점이 들 수 있습니다.

 

뭐 간단하게는 로직을 복붙으로 붙여 넣을 수도 있겠습니다만, 저 형태를 2023년 10월 10일로 모두 바꿔야 한다면 머리가 점점 아파 질 수 있습니다.

 

이는 날짜 포맷 만이 아닌 핸드폰 번호나 계좌 번호 포맷, 특정 데이터를 어떤 형태로 변환해야 하는 등 의 기능들을 하나의 도구로 만들고 그 도구를 사용하자는 취지입니다.

 

지금은 개념에 대해 인지만 해주시고 넘어가주시는 것을 추천드립니다.

 

마지막으로 SharedPreferencesManager 는 안드로이드 내부 저장소에 데이터를 저장해두는 부분으로 예를 들면 다음과 같습니다.

 

1. 유저의 로그인 정보 저장

2. 유저가 특정 페이지에 처음 들어온 경우 튜토리얼을 보여주고 다시 들어오면 안보여주기

3. 특정 기능을 몇번 이상 사용했다면 사용 못하게 하기

 

와 같은 기능을 구현할때 유용합니다.

 

지금까지 설명드린 요소들을 활용하여 추후 앱 개발 시 다양한 로직들을 구성해볼 예정이고, 이를 기반으로 테스트 코드도 같이 작성해보겠습니다.

 

그럼 다음 di  편에서 뵙도록 하겠습니다.

 

나만의 안드로이드 앱 만들기(초보자 편) - DI (6-5)

이번 편에서는 di 에 대해 설명드리겠습니다. 전체 코드는 다음과 같습니다. https://github.com/tmvlke/SimpleDutch/tree/22bff04ce892503bce7c4e8f081557289f5d4a62/app/src/main/kotlin/wskim/aos/simpledutch/di di 는 개발에서 한번

victorywskim.tistory.com

 

감사합니다.

728x90
반응형

관련글 더보기