Policy-based class design is a technique of simplifying a complex behavior by breaking it up into multiple abstractions called policies. Each policy abstracts only one behavioral or structural aspect of that class and lets the user control that aspect independent of others. Users can also override the default implementation of the policies to fit their
requirements as long as they respect the policy interface.