In Dart, just like in Ruby, your classes can use mixins to assign a certain behavior to your class. Say an object must be able to store itself, so its class mixes in a class called
Persistable that defines
load() methods. From then on, the original class can freely use the mixed-in methods. The mechanism is not used for specialized subclassing or is-a relationships, so it doesn't use inheritance. This is good because Dart uses a single inheritance, so you want to choose your unique direct superclass with care.
Embraceclass from the previous recipe needs to persist itself, so it mixes with the abstract class
Persistable, thereby injecting the save and load behavior. Then, we ...