The strategy design pattern allows you to individually encapsulate a set of interchangeable algorithms. This results in algorithm variability depending on the calling client. This is similar to method overloading, which allows a class to have more than one method with the same name. The difference between the same-named methods is their argument list.
The strategy design pattern differs from the method overloading example when each algorithm is individually encapsulated.
A sample UML class diagram is provided in the next section.