Skip to content

Instantly share code, notes, and snippets.

@paynerb
Created August 10, 2024 17:24
Show Gist options
  • Select an option

  • Save paynerb/84f5b1046fd60074b585fafdf81027bf to your computer and use it in GitHub Desktop.

Select an option

Save paynerb/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