Chapter 8. Kotlin Delegates
This chapter talks about delegates in Kotlin. You’ll learn how to use delegates in the standard library, including
notNull, as well as create your own. Class delegates let you replace inheritance with composition, and property delegates replace the getters and setters for a property with those from another class.
In addition to the basic demonstrations, this chapter also shows how some of the standard delegates are implemented in the library, as examples of good idiomatic usage.
8.1 Implementing Composition by Delegation
You want to create a class that contains instances of other classes and delegate behavior to them.
Create interfaces that contain the delegation methods, implement them in classes, and build the wrapper class out of them using the keyword
Modern object-oriented design tends to favor composition rather than inheritance1 as a way to add functionality without strong coupling. In Kotlin, the keyword
by allows a class to expose all the public functions in a contained object through the container.
For example, a smartphone contains both a phone and a camera, among other components. If you think of the smartphone as a wrapper object, and the internal phone and camera as contained objects, the goal is to write the smartphone class so that its functions invoke the corresponding ones in the contained instances.
To do this in Kotlin, you need to create interfaces for the exposed ...