Delegation is a common design pattern allowing a class to defer the implementation of some behavior to another class; increasing the amount of reusable code in our projects. Kotlin supports delegation natively for both interface implementations and properties, making it easy to apply in our code.