Strategy pattern and policy-based design
The classic Strategy pattern is a behavioral design pattern that enables the runtime selection of a specific algorithm for a particular behavior, usually from a predefined family of algorithms. This pattern is also known as the policy pattern; the name predates its application to generic programming in C++. The aim of the Strategy pattern is to allow for more flexibility in the design.
Note
In the classic object-oriented Strategy pattern, the decision about which specific algorithm to use is deferred until runtime.
As is the case with many classic patterns, the generic programming in C++ applies the same approach to algorithm selection at compile time - it allows for compile-time customization of specific aspects of the system behavior by selecting from a family of related, compatible algorithms. We will now learn the basics of implementing classes with policies in C++, then proceed to study more complex and varied approaches to policy...