Skip to content

Instantly share code, notes, and snippets.

@rpayne1776
Created August 10, 2024 17:24
Show Gist options
  • Save rpayne1776/84f5b1046fd60074b585fafdf81027bf to your computer and use it in GitHub Desktop.
Save rpayne1776/84f5b1046fd60074b585fafdf81027bf to your computer and use it in GitHub Desktop.
Example delegation pattern for Kotlin data classes
sealed interface Device {
val metadata: Metadata
data class Camera(
override val metadata: Metadata,
val extras: Map<Int, String>
) : Device
data class Thermostat(
override val metadata: Metadata
) : Device
data class DoorLock(
override val metadata: Metadata
) : Device
sealed interface Metadata {
val id: String
val name: String
data class Summary(
override val id: String,
override val name: String
) : Metadata
data class Detail(
val summary: Summary,
val description: String,
val notes: String
) : Metadata by summary
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment