Skip to content

Instantly share code, notes, and snippets.

@ValeryPonomarenko
Last active April 24, 2019 19:04
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ValeryPonomarenko/d7c5aedb3ab5b7a5300891959d4ac57b to your computer and use it in GitHub Desktop.
Save ValeryPonomarenko/d7c5aedb3ab5b7a5300891959d4ac57b to your computer and use it in GitHub Desktop.
Rendering a Screen Based On Its ViewState
class Renderer<VS>(
private val viewStateRendererPicker: ViewStateRendererPicker<VS>,
private val renderers: Map<KClass<out ViewStateRenderer<VS>>, ViewStateRenderer<VS>>
) {
fun render(view: View, viewState: VS) {
val rendererClass = viewStateRendererPicker.pick(viewState)
renderers[rendererClass]?.render(view, viewState)
?: throw IllegalStateException("There is no ViewStateRenderer for ${rendererClass.simpleName}")
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment