Define a family of algorithms, encapsulate each one, and make them interchangeable.
Strategy lets the algorithm vary independently from clients that use it.
Also Known as
You have a situation whereby you manipulate a set of objects in different ways
depending on the algorithm.
For instance, a word processor may
have several line breaking strategies.
It manipulates lines, paragraphs and characters.
You don't want a case statement in
the client that explicity specifies each strategy.
This makes it difficult to vary existing algorithms and add new ones.
Solution? Encapsulate the algorithm that changes.
Please note all material is taken from the book Design
Patterns: Elements of Resusable Object-Oriented Software.
See source listed at the end.