Created
September 22, 2020 04:57
-
-
Save ch8n/867a4da61e70ee29f7ec44859c699742 to your computer and use it in GitHub Desktop.
for medium article
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// your core injectores need to have public all public fields | |
------- Domain Injection ------- | |
// in searchmovie Domain module build.gradle | |
dependencies { | |
implementation project(":core") | |
} | |
class SearchMovieApiManager(private val retrofit : Retrofit) { | |
val movieSearchService : MovieSearchService by lazy { | |
retrofit.create(MovieSearchService::class.java) | |
} | |
} | |
object SearchMovieResolver { | |
fun provideSearchMoviewApiManager(retrofit: Retrofit) | |
= SearchMovieApiManager(retrofit) | |
} | |
// create injector side domain layer | |
object SearchDomainInjector { | |
// step 3, api manager requires retrofit instance | |
private val apiManager = SearchMovieResolver | |
.provideSearchMoviewApiManager(Injector.retrofit) | |
// step 2, movie source requires apimanager | |
private val movieSearchSource by lazy { | |
AppResolver.provideMovieDataSource(apiManager) | |
} | |
// step 1, factory requires movie search repository | |
val movieSearchRepository by lazy { | |
AppResolver.provideMovieRepository(movieSearchSource) | |
} | |
} | |
------- UI Injection ------- | |
// in searchmovie module build.gradle | |
dependencies { | |
implementation project(":searchDomain") | |
} | |
object SearchMovieUiResolver { | |
fun provideSearchMovieVmFactory(movieRepository : MovieSearchRepository) | |
= MovieSearchViewModelFactory(movieRepository) | |
} | |
// in your seach module you need to create scoped injection discussed above | |
object SearchInjector { | |
fun searchViewModel(activity: AppCompatActivity) : MovieDetailViewModel { | |
return ViewModelResolver.provideSearchViewModel( | |
SearchMovieUiResolver.searchViewModelFactory, activity | |
) | |
} | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment