Created
August 10, 2024 17:24
-
-
Save rpayne1776/84f5b1046fd60074b585fafdf81027bf to your computer and use it in GitHub Desktop.
Example delegation pattern for Kotlin data classes
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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