Map 과의 상호작용 분리하기

SeongUg Steve Jung
3 min readOct 5, 2019

--

이전 포스팅(Link)에서 RxJava 로 GoogleMap 을 어떻게 관리하는지에 대해서 알아보았습니다.

이번 포스팅은 Map 과 상호작용하는 과정을 어떻게 독립적으로 분리할 수 있는지를 공유하고자 합니다.

  1. Interactor 만들기

특정 좌표로 맵을 이동해야하는 기능이 필요하다 했을때 LatLongSnapInteractor 를 만들어 봅시다.

외부의 컴포넌트는 맵에 직접 접근하지 않고 LatLongSnapInteractor 를 통해서 Map 으로 접근합니다.

2. Interactor 관리체 만들기

위에서 작성한 Interactor 들은 Android Activity/Fragment Lifecycle 에 맞춰서 동적으로 동작할 수 있도록 하기 위해서 Lifecycle 에 따라 동작할 수 있는 관리주체가 있어야 합니다.

이 관리주체는 동일한 Scope 의 Lifecycle 을 관리해줍니다.

3. InteractorController라이프사이클 대응하기

InteractorControllerActivity/Fragment 의 Lifecycle 에 대응하기 위해서 Activity/Fragment 에 주입되어 각 라이프사이클에 맞춰서 동작하도록 할 수 있습니다.

4. ViewModel,Presenter 에서 Interactor 호출하기

이제 ViewModel 에서 Interactor 에 필요한 처리를 호출하여 동작하도록 합니다.

위와 같이 ViewModel 은 LocationProvider 에 제공받는 위치 정보를 interactor 값을 전달합니다. Interactor 는 받은 값을 토대로 내부 처리를 하도록 합니다.

요약

InteractorController : Intractor 와 MapProvider 사이에서 Map 객체와 라이프사이클을 관리하고 전달하는 역할을 수행합니다.

Interactor : ViewModel/Presenter 와 Map 사이에서 처리에 필요한 정보를 관리하고 처리를 요청하는 역할을 수행합니다.

많은 기능을 가진 Map 객체에 대한 처리를 여러 Interactor 로 나누어서 외부 인터페이스를 관리할 수 있습니다. 이를 ViewModel/Presenter 등 실제 비지니스 로직을 수행하는 객체에 적은 인터페이스만 노출하여 관리할 수 있으며 맵 초기화, 라이프사이클 관리, 실제 동작 수행이 분리되어서 관리할 수 있는 장점이 있습니다.

실제 샘플 코드는 Github Link 를 통해서 확인 하실 수 있습니다.

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

--

--

SeongUg Steve Jung
SeongUg Steve Jung

Written by SeongUg Steve Jung

Android Developer, Google Developers Experts

Responses (2)

Write a response