Back to articles
Kotlin Delegation Patterns — by, lazy, observable & Custom Delegates

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

via Dev.tomyougaTheAxo

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

Continue reading on Dev.to

Opens in a new tab

Read Full Article
17 views

Related Articles