Skip to content

Instantly share code, notes, and snippets.

@sliskiCode
Last active December 6, 2017 22:53
Show Gist options
  • Save sliskiCode/cf395f0dc36a9465fad4be1727786404 to your computer and use it in GitHub Desktop.
Save sliskiCode/cf395f0dc36a9465fad4be1727786404 to your computer and use it in GitHub Desktop.
6 magic sugars that can make your Kotlin codebase happier #15
abstract class Item
class MediaItem : Item() {
val media = ...
}
class IconItem : Item() {
val icon = ...
}
interface Renderer {
fun render(view: View, item: Item)
}
class MediaItemRenderer : Renderer {
override fun render(view: View, item: Item) {
if (item !is MediaItem) {
throw AssertionError("Item is not an instance of MediaItem")
}
view.showMedia(item.media)
view.reset()
}
}
class IconItemRenderer : Renderer {
override fun render(view: View, item: Item) {
if (item !is IconItem) {
throw AssertionError("Item is not an instance of IconItem")
}
view.showIcon(item.icon)
view.reset()
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment