Zum Hauptinhalt springen
tsecurity.de LIVE
Echtzeit-Radar & Feeds
Alle RSS Feeds
👥 Community & Social
Apple iOS & macOSApple arbeitet an einem Fitness-Tracker ohne Display(22.09.2026 um 21:33 Uhr)
Apple iOS & macOSApple stoppt Entwicklung des AirTag-großen KI-Pins(22.09.2026 um 22:22 Uhr)
Apple iOS & macOSApple arbeitet an einem Fitness-Tracker ohne Display(22.09.2026 um 21:33 Uhr)
Apple iOS & macOSApple stoppt Entwicklung des AirTag-großen KI-Pins(22.09.2026 um 22:22 Uhr)
Intelligence View
⚡ tsecurity.de Intelligence

Kotlin Delegation Patterns — by, lazy, observable & Custom Delegates

Kotlin Delegation Patterns — by, lazy, observable & Custom Delegates Delegation is one of Kotlin's most powerful features. It reduces boilerplate and encourages composition over inheritance. Class Delegation with '…

0
↗ Quelle (dev.to)
Reagiere als Erste:r — dein Feedback zählt!




Kotlin Delegation Patterns — by, lazy, observable & Custom Delegates



Delegation is one of Kotlin's most powerful features. It reduces boilerplate and encourages composition over inheritance.






Class Delegation with 'by'






interface Logger {
fun log(message: String)
}

class ConsoleLogger : Logger {
override fun log(message: String) = println(message)
}

class Application(logger: Logger) : Logger by logger

// Usage
val app = Application(ConsoleLogger())
app.log("App started") // Delegates to ConsoleLogger






The interface methods are automatically forwarded to the delegated object.






Lazy Initialization






val database: Database by lazy {
println("Initializing database...")
Database()
}

// First access initializes
database.query("SELECT * FROM users")






Perfect for expensive operations that may never be needed.






Observable & Vetoable Properties






var age: Int by Delegates.observable(0) { prop, oldValue, newValue ->
println("Age changed from $oldValue to $newValue")
}

var salary: Int by Delegates.vetoable(50000) { prop, oldValue, newValue ->
newValue > oldValue // Reject decreases
}

age = 25 // Prints: Age changed from 0 to 25
salary = 40000 // Rejected
salary = 60000 // Accepted









Map Delegation






val person = mutableMapOf(
"name" to "Alice",
"age" to 30,
"city" to "New York"
)

val name: String by person
val age: Int by person

println("$name is $age years old") // Alice is 30 years old






Useful for dynamic property access.






Custom Delegate Implementation



SharedPreferences example:




class SharedPrefsDelegate<T>(
private val key: String,
private val defaultValue: T,
private val prefs: SharedPreferences
) : ReadWriteProperty<Any?, T> {

override fun getValue(thisRef: Any?, property: KProperty<*>): T {
return when (defaultValue) {
is String -> prefs.getString(key, defaultValue) as T
is Int -> prefs.getInt(key, defaultValue) as T
is Boolean -> prefs.getBoolean(key, defaultValue) as T
else -> defaultValue
}
}

override fun setValue(thisRef: Any?, property: KProperty<*>, value: T) {
prefs.edit().apply {
when (value) {
is String -> putString(key, value)
is Int -> putInt(key, value)
is Boolean -> putBoolean(key, value)
}
}.apply()
}
}

// Usage
class SettingsManager(prefs: SharedPreferences) {
var theme: String by SharedPrefsDelegate("theme", "dark", prefs)
var notifications: Boolean by SharedPrefsDelegate("notifications", true, prefs)
}

val settings = SettingsManager(getSharedPreferences("app", MODE_PRIVATE))
settings.theme = "light" // Persists immediately
println(settings.theme) // "light"









viewModels() as Delegation






class MyFragment : Fragment() {
private val viewModel: MyViewModel by viewModels()
}






Behind the scenes, viewModels() is a property delegate using ReadOnlyProperty.






When to Use Each
































Pattern Use Case
Class by
Composition over inheritance
lazy Expensive one-time initialization
observable Track state changes
vetoable Validate before assignment
Custom Domain-specific persistence/behavior


Delegation makes code cleaner, testable, and maintainable. Use it liberally.






Interested in mobile app development? Check out 8 Android app templates on Gumroad!

Ähnliche Beiträge
🔍 Verwandte News

Auch interessante Nachrichten Kotlin Delegation Patterns — by, lazy, observable & Custom Delegates

Thematisch verwandte Begriffe: Kotlin, Delegation, Patterns, lazy · 6 Treffer

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Zum Aktualisieren ziehen
ZERO-DAY CVE-2026-82000 | Adobe Experience Manager Forms JEE is affected by a Server-Side Request …
Advisory →
TTS Reader • tsecurity.de Voice
tsecurity.de Icon
tsecurity.de App
Offline-Lesen, Eilmeldungen & 0ms Ladezeit

Installiere tsecurity.de direkt auf deinen Home-Bildschirm für das ultimative Vollbild-Magazinerlebnis ohne Browser-Leisten.

Nächster Beitrag
Themen-Radar & Intelligence Matrix
Echtzeit-Taxonomie nach Angriffsvektoren & Plattformen

tsecurity.de Live Threat Radar

🔴 LIVE RADAR
MONITORING
AKTIV
CVE-DATENBANK
LIVE
🔍
Community Radar & Live Chat
Sentinel Bot online • Live-Stream
Dein Cluster: Security Explorer
Match:
lädt…
Verbindung zum Community-Stream wird aufgebaut...
Bearbeitungsmodus — Senden überschreibt deine Nachricht
Community-Puls — was gerade passiert
lädt…
Aktivitäten deiner Analysten
lädt…
Neues Thema oder Eilmeldung einreichen

Reiche interessante Links, Zero-Days oder Debatten ein. Die Community entscheidet per Upvote über die Veröffentlichung.

Heiß diskutierte Einreichungen
🔖 Gespeicherte Artikel
📂 Keine gespeicherten Artikel vorhanden.
Zurück Ziehen Vor
Links: vorheriger Artikel Rechts: nächster Artikel unten: schließen
News NIS-2 Frühwarnung Tier-1 Intel ⏱️ 3 Min vor 10 Min
Artikeldaten werden geladen...

Zurück: vorheriger Vor: nächster
↗ Original-Quelle
Social Reaktionen Deine Reaktion zählt
Einstufung & Relevanz-Poll 0 Stimmen
In sozialen Netzwerken teilen 1-Klick