📚
UseCaseがたくさん出来すぎる問題の解決方法
Androidのアプリを作っていて、機能が増えてくるとUseCaseが増えすぎる問題があるよな。。。
と感じたので、解決手段を調査しました。
結論:UseCaseは機能毎にまとめる
UseCaseは機能毎にまとめてViewModelに提供すればいいと思います。
例えば、とあるカウンターアプリの機能に、カウントアップ、カウントダウン、カウントリセットがあるとします。
それぞれの機能をUseCaseで作ってViewModelに提供すると、UseCase多すぎるという問題が起こるのは容易に想像つきます。
そこで、作ったUseCaseをそれぞれ別でDIするのではなく機能毎に1つのUseCaseにまとめてしまいます。
今回だと、カウンターを制御するUseCaseが3つあるので、カウンターの制御に関するUseCaseを1つにまとめたクラスを作成してViewModelに提供すればよさそうです。
実装例を記載します。
なお、紙面の関係でinterfaceは記載していませんが、ご了承ください。
/**
* カウントアップ
*/
class CountUpUseCase() {
operator fun invoke(count : Int) { return count + 1 }
}
/**
* カウントダウン
*/
class CountDownUseCase() {
operator fun invoke(count : Int) { return count - 1 }
}
/**
* カウントリセット
*/
class CountResetUseCase() {
operator fun invoke(count : Int) { return 0 }
}
/**
* カウンターの更新を制御するUseCase群
*/
data class CounterUseCases (
val up = CountUpUseCase
val down = CountDownUseCase
val reset = CountResetUseCase
)
Discussion